我正在尝试在我的服务器上启用opCache (ubuntu 12.04 LTS
,使用PHP Version 5.5.10-1+deb.sury.org~precise+1
运行apache 2.4.7
)。
在开始做任何事情之前,我阅读了this highly relevant post,它告诉我opCache在默认情况下是禁用的,我必须手动启用它。
我进入php.ini,发现opcache.so
中没有文本,而且所有与opcache相关的内容都被注释掉了。如下所示:
[opcache]
; Determines if Zend OPCache is enabled
;opcache.enable=0
; Determines if Zend OPCache is enabled for the CLI version of PHP
;opcache.enable_cli=0
这是正常的,因为这个人被告知它是禁用的。但是当我咨询phpinfo();
时,它会告诉我以下内容(根据我的理解,它告诉我opCache已经被使用了)。
那么,我的opcache是否已启用和使用,我如何查看/验证它?
发布于 2014-04-01 06:09:09
相信你的phpinfo()
,你已经运行了必要的共享模块,否则它就不会出现。
此外,您的opcache确实是启用的,但仅用于web,而不是cli。库的默认值是为web启用的,因此,要禁用,请取消注释以分号开头的行,如下所示:
opcache.enable=0
如前所述,对于命令行php使用,缺省值是禁用的,要启用它,请取消注释并设置为1
opcache.enable_cli=1
下面是所有运行时参数的列表,以及可供进一步参考的默认值:http://www.php.net/manual/en/opcache.configuration.php
更新:从2020年起,这个库可能不再维护,请参阅下面的注释以了解其他可能的选项。
如果你想要一个很酷的网页监控页面(就像apc.php为apc所做的那样),试试这个:https://github.com/rlerdorf/opcache-status
发布于 2020-11-17 03:41:55
由于某些原因,关于PHPv5.5(最早支持它的版本)的PHP有很多相互矛盾的文档,一些网页说它是默认启用的,另一些网页说它是编译的,但默认情况下没有启用。
在我的记忆中,我想我见过PHP5.5和5.6的安装,其中OPcache确实被编译了,但是还没有被启用。这就解释了为什么默认php.ini
行显示为禁用。这种混乱很可能是由于PHP的编译方式不同造成的。
无论如何,由于各种原因,似乎PHP 7+ pretty much always在默认情况下启用了OPcache,并且再次避免了复杂的讨论重新编译。
总而言之,OP问题实际上是为了检查是否启用了OPcache (仅限)。
为此,有一个用于此的special function opcache_get_status
,它也可以accept arrays。下一步,这个函数可能会变得更流行,因为它比php.ini
更适合解释OPcache配置设置,并且可以在各种脚本中使用,等等。
下面是一个简单的例子:
<?php (is_array(opcache_get_status()) ? 'enabled' : 'disabled') ?>
https://stackoverflow.com/questions/22773041
复制相似问题