PHP 5.5 OPCache 不适用于 apache

Posted

技术标签:

【中文标题】PHP 5.5 OPCache 不适用于 apache【英文标题】:PHP 5.5 OPCache not working on apache 【发布时间】:2013-10-30 00:41:16 【问题描述】:

我在公司负责操作码缓存交换,我们正在从 eaccelerator 迁移到 php 5.5 附带的 Zend OPCache。

当我在 CLI 中访问 PHP 时,OPCache 似乎工作正常:

PHP 5.5.5 (cli) (built: Oct 15 2013 10:29:13)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

但是当我通过 Apache 访问我的网站时,与不使用操作码缓存的相同页面相比,基准测试显示没有任何改进。此外,get_loaded_extensions(true) 返回一个空数组。

谁能回答我为什么它不工作?

我使用的是 Windows 7,Apache Lounge 的 Apache 2.4.6,windows.php.net 的 PHP 5.5.5。


编辑:

根据要求,我的 OPCache 配置:

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
;opcache.max_wasted_percentage=5
;opcache.use_cwd=1
;opcache.validate_timestamps=1
opcache.revalidate_freq=60
;opcache.revalidate_path=0
;opcache.save_comments=1
;opcache.load_comments=1
opcache.fast_shutdown=1
;opcache.enable_file_override=0
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
;opcache.blacklist_filename=
;opcache.max_file_size=0
;opcache.consistency_checks=0
;opcache.force_restart_timeout=180
;opcache.error_log=
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0

【问题讨论】:

你能提供给我们phpinfo的opcache部分吗? 当然,我只是把问题的描述写进去了。 How to use PHP OPCache?的可能重复 【参考方案1】:

找到答案了!

zend_extension 扩展必须设置完整路径,而不是相对路径。

在这种情况下,zend_extension="C:\Apache24\php\ext\php_opcache.dll" 解决了我的问题。

【讨论】:

在我的情况下,将 extension=php_opcache.dll 更改为 zend_extension=php_opcache.dll 有帮助。 zend_extension=php_opcache.dll(加上默认设置 opcache.enable = 1...)为我工作。 对于 UwAmp:zend_extension=PHPEXTPATH/php_opcache.dll【参考方案2】:

确保你的 phpinfo(); 中有“opcache”。报告。 By default:

此 PECL 扩展的 DLL 当前不可用。另请参阅building on Windows 部分。

您能否确认扩展程序已加载?

【讨论】:

不,它也没有显示在我的phpinfo() 中。但是,正如我之前提到的,我为扩展指定了错误的路径。【参考方案3】:

WINDOWS PHP 7 解决方案

默认情况下,php.ini 文件中有 opcache 设置,如 opcache.eneable,但启用 opcache 不会生效,除非您添加:

zend_extension=php_opcache.dll

到你的配置文件。 记住它是 zend_extension 而不是常规扩展!

【讨论】:

以上是关于PHP 5.5 OPCache 不适用于 apache的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpCache 提升 PHP 5.5+ 程序性能

apache_conf 关闭php 5.5 OPCache

无法在 Centos 6.4 上安装 php 5.5 opcache

为啥 PHP 5.5 的 OPcache 显示零命中? suPHP 的罪魁祸首?

PHP5.5+启用OPCache

PHP安装使用Zend Opcache扩展