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

2022-08-30 10:54:32

我正在尝试在我的服务器上启用 opCache(与 一起运行)。ubuntu 12.04 LTSapache 2.4.7PHP Version 5.5.10-1+deb.sury.org~precise+1

在开始做任何事情之前,我读了这篇高度相关的帖子,它告诉我opCache默认情况下处于禁用状态,我必须手动启用它。

我进入了php.ini发现没有文本,而且与opcache相关的所有内容都被注释掉了。喜欢这个:opcache.so

[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

这没关系,因为这个人告诉它是残疾人。但是当我咨询时,它向我显示了以下内容(并且根据我的理解,它告诉我已经使用了opCache)。phpinfo();

enter image description here

那么我的opcache是否启用和使用,我如何查看/验证它?


答案 1

相信你的,你已经运行了必要的共享模块,否则它不会出现。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


答案 2

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

仅从我的记忆中可以看出,我认为我已经看到PHP 5.5和5.6安装,其中OPcache确实已编译但尚未启用。这可以解释为什么默认行显示为禁用。这种混淆可能是由于编译PHP的各种方式造成的。php.ini

无论如何,由于各种原因,PHP 7+似乎几乎总是默认启用OPcache,并且再次避免了复杂的讨论:编译。

总而言之,OP问题实际上是为了检查OPcache是否启用(仅)。

为此,有一个特殊的函数,它也可以接受数组。展望未来,此功能可能会变得更加流行,因为它更适合解释OPcache配置设置,而不是可以在各种脚本等中使用。opcache_get_statusphp.ini

下面是一个简单示例:

<?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


推荐