如何确定是否启用了PHP OPcache?

如何确定是否启用了PHP OPcache?,php,opcache,phpinfo,Php,Opcache,Phpinfo,我正在尝试在我的服务器上启用opCache(Ubuntu12.04 LTS,运行Apache2.4.7,使用PHP版本5.5.10-1+deb.sury.org~precise+1) 在开始做任何事情之前,我读了一篇文章,它告诉我opCache在默认情况下是禁用的,我必须手动启用它 我进入php.ini,发现没有包含opcache的文本。因此,与opcache相关的所有内容都被注释掉了。像这样: [opcache] ; Determines if Zend OPCache is enabled

我正在尝试在我的服务器上启用opCache(
Ubuntu12.04 LTS
,运行
Apache2.4.7
,使用
PHP版本5.5.10-1+deb.sury.org~precise+1

在开始做任何事情之前,我读了一篇文章,它告诉我opCache在默认情况下是禁用的,我必须手动启用它

我进入php.ini,发现没有包含
opcache的文本。因此
,与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是否已启用和使用,我如何查看/验证它呢?

请相信您的
phpinfo()
,您已经运行了必要的共享模块,否则它将不会显示

此外,您的opcache确实已启用,但仅适用于web,而不适用于cli。库的默认设置是为web启用的,因此,要禁用以分号开头的行取消注释,如下所示:

 opcache.enable=0 
如前所述,对于命令行php使用,默认设置为禁用,要启用它,请取消注释并设置为1

 opcache.enable_cli=1
以下是所有运行时参数的列表,并有默认值供进一步参考:

更新:自2020年起,该库可能不再维护,其他可能的选项请参见下面的注释

如果您想要一个很酷的web监视器页面(就像apc.php为apc所做的那样),请尝试以下方法:


出于某种原因,关于PHPV5.5(最初支持它的版本)的PHP OPcache有很多相互矛盾的文档,有些网页说默认情况下它已启用,而另一些网页说默认情况下它已编译,但未启用

仅凭记忆,我想我见过PHP5.5和5.6安装,其中确实编译了OPcache,但尚未启用。这将解释为什么默认
php.ini
行显示被禁用。这种混乱很可能是由于PHP的各种编译方式造成的

无论如何,出于各种原因,PHP7+似乎在默认情况下启用了OPcache,并且再次避免了关于编译的复杂讨论

尽管如此,OP问题实际上是为了检查是否启用了OPcache(仅限)

为此,有一个
opcache\u get\u status
,它也可以。展望未来,此函数可能会变得更受欢迎,因为它比
php.ini更适合解释OPcache配置设置,并且可以在各种脚本中使用,等等

下面是一个简单的例子:

<?php (is_array(opcache_get_status()) ? 'enabled' : 'disabled') ?>


Ref:

在运行
phpinfo()
@Victory之前是否重新启动了服务器?我刚刚重新启动了服务器,结果是一样的。(除缓存命中3中的数字外,缓存未命中2)。还使用/释放内存缓存脚本/密钥。这实际上让我更相信它已经在运行了。我也有同样的问题,但我的价值观没有改变。。有什么建议吗?很好,谢谢。显然,我必须相信phpinfo,而不是那些被高估的答案。谢谢您的确认。@Salvadodali您所指的另一篇关于扩展共享库是否存在并已加载的帖子。我认为应该明确指出,共享模块在默认的PHP5.5版本中可能没有设置为加载,但这并不意味着它被“禁用”,甚至没有加载。显然,您的设置已启用模块的共享库。启用模块后,您可以使用配置设置I来不打开和关闭特定功能以及启用/禁用特定功能。出于某种原因,我认为这个答案将在未来几年内大受欢迎:)我只是想说,如果您需要从cli检查它,您可以运行php-I | grep opcache已经很久没有更新了。尝试它定期更新。还请注意,您可以检查函数_exists('opcache_get_status')以避免致命错误。根据我是否调用
echo“starting test\nopcache status:”。是_数组(opcache_get_status())?,会产生不同的结果启用':'禁用'或只是
echo是_数组(opcache_get_status())?'启用':'禁用'-这有点不方便。。。