我的OpCache在运行吗?

时间:2014-03-31 21:59:12

标签: php opcache

我正在尝试在我的服务器上启用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)。

enter image description here

我的opcache是​​否已启用并使用,如何查看/验证它?

2 个答案:

答案 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') ?>

参考:https://www.digitalocean.com/community/questions/enable-php-5-5-opcache-on-ubuntu-14-04-with-nginx-and-php-fpm?comment=25376