我正在尝试在我的服务器上启用opCache(ubuntu 12.04 LTS
,使用apache 2.4.7
运行PHP Version 5.5.10-1+deb.sury.org~precise+1
。
在开始做任何事情之前,我读了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是否已启用并使用,如何查看/验证它?
答案 0 :(得分:32)
相信您的phpinfo()
,您已经运行了必要的共享模块,或者它无法显示。
此外,您的opcache确实已启用,但仅适用于网络,而非cli。该库的默认值已启用,因此,禁用取消注释以分号开头的行:
opcache.enable=0
如上所述,对于命令行php使用,默认为禁用,启用它,取消注释并设置为1
opcache.enable_cli=1
以下是所有运行时参数的列表,并提供了默认值以供进一步参考:http://www.php.net/manual/en/opcache.configuration.php
如果你想要一个很酷的网络监控页面(就像apc.php那样为apc)试试这个: https://github.com/rlerdorf/opcache-status
答案 1 :(得分:1)
由于某些原因,关于用于PHP v5.5的PHP OPcache(最初支持该版本)的文档存在很多冲突,其中一些网页说默认启用,而另一些则说它已编译但未启用,默认情况下。
仅凭我的记忆,我想我已经看过PHP 5.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') ?>