47

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

在开始做任何事情之前,我阅读了这篇高度相关的帖子,它告诉我 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 是否已启用和使用,我如何查看/验证它?

4

2 回答 2

47

相信你的phpinfo(),你已经运行了必要的共享模块,否则它不会出现。

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

 opcache.enable=0 

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

 opcache.enable_cli=1

以下是所有运行时参数的列表和默认值以供进一步参考:http ://www.php.net/manual/en/opcache.configuration.php

更新:截至 2020 年,此库可能不再维护,请参阅下面的评论了解其他可能的选项。

如果你想要一个很酷的 web 监控页面(就像 apc.php 为 apc 做的那样)试试这个:https ://github.com/rlerdorf/opcache-status

于 2014-03-31T22:09:08.573 回答
6

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

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

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

综上所述,OP 问题实际上是用于检查 OPcache 是否启用(仅)。

为此,有一个特殊的函数 opcache_get_status,它也可以接受数组。展望未来,这个功能可能会变得更流行,因为它更适合解释 OPcache 配置设置,php.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

于 2020-11-16T19:41:54.857 回答