在 wamp 中为 php 启用 opcache
Posted
技术标签:
【中文标题】在 wamp 中为 php 启用 opcache【英文标题】:Enable opcache for php in wamp 【发布时间】:2015-12-18 07:04:25 【问题描述】:我尝试在 wamp 上启用 opcache,但它不起作用。我改变了这样的设置:
[opcache]
zend_extension=C:/wamp/bin/php/php5.5.12/ext/php_opcache.dll
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
我在php for opcache的扩展名里总是有红色感叹号 怎么了?请帮忙
它在 phpinfo() 中
Zend OPcache
Opcode Caching Up and Running
Optimization Enabled
Startup OK
Shared memory model win32
Cache hits 0
Cache misses 1
Used memory 483608
Free memory 133734120
Wasted memory 0
Cached scripts 1
Cached keys 2
Max keys 7963
OOM restarts 0
Hash keys restarts 0
Manual restarts 0
opcache.blacklist_filename no value no value
opcache.consistency_checks 0 0
opcache.dups_fix Off Off
opcache.enable On On
opcache.enable_cli Off Off
opcache.enable_file_override Off Off
opcache.error_log no value no value
opcache.fast_shutdown 1 1
opcache.file_update_protection 2 2
opcache.force_restart_timeout 180 180
opcache.inherited_hack On On
opcache.interned_strings_buffer 8 8
opcache.load_comments 1 1
opcache.log_verbosity_level 1 1
opcache.max_accelerated_files 4000 4000
opcache.max_file_size 0 0
opcache.max_wasted_percentage 5 5
opcache.memory_consumption 128 128
opcache.mmap_base no value no value
opcache.optimization_level 0xFFFFFFFF 0xFFFFFFFF
opcache.preferred_memory_model no value no value
opcache.protect_memory 0 0
opcache.restrict_api no value no value
opcache.revalidate_freq 60 60
opcache.revalidate_path Off Off
opcache.save_comments 1 1
opcache.use_cwd On On
opcache.validate_timestamps On On
我找到了这个如果你想知道它是否有效:https://github.com/rlerdorf/opcache-status/blob/master/opcache.php
【问题讨论】:
运行 phpinfo() 先检查已安装的模块。 它在我上面编辑的 php 信息中 在日志文件或事件查看器中查找有关错误的记录消息 【参考方案1】:在 PHP5.5.12 中,opcache 作为 zend 扩展提供,但它位于标准的 ext
文件夹中。
因此,除了使用 zend_extension
而不是 extension
参数之外,您将像任何其他 PHP 扩展一样加载它,因此请使用 wampmanager 菜单编辑您的 php.ini
文件,以确保您像这样编辑正确的文件:-
wampmanager -> PHP -> php.ini
首先检查这个参数是否设置正确:
extension_dir = "C:/wamp/bin/php/php5.5.12/ext/"
现在您已经在示例中加载了 OpCache dll,这样做,它将从默认扩展文件夹加载,就像普通的 extension=
一样:-
zend_extension=php_opcache.dll
你可以这样做:-
zend_extension="C:/wamp/bin/php/php5.5.12/ext/php_opcache.dll"
但无需指定完整路径,因为它是从标准 ext
文件夹加载的。
警告
如果您仍在开发,您几乎绝对不要打开它,因为它不会增加任何好处,并且可能会增加标准编译的时间,在每次代码更改后重新缓存,并且可能不会重新编译和使用当你不想要它时缓存代码。
【讨论】:
1) 你确定你正在编辑正确的 php.ini 文件,有 2 个吗? 2) 您使用的是 web phpinfo() 还是 PHP CLI phpinfo()?完全不起作用是什么意思? 不,只有一个 php.ini 我没有 2。我不知道 phpinfo() 或 PHP CLI phpinfo() 有什么区别,但我在本地工作。并且 opcache 不起作用。我还是 opcache 附近的感叹号。 你给的phpinfo()
的输出似乎说opcache正在工作!
是的,我刚刚查过了,感叹号无关紧要
@Pathfinder 使用 opcache 开发是可以的,只要您知道偶尔会出现问题以及如何在需要时刷新缓存【参考方案2】:
由于您在 Windows 上工作,我认为您应该像这样设置路径
zend_extension=C:\path\to\php_opcache.dll (win) [注意斜线]
对于您的情况: zend_extension=C:\wamp\bin\php\php5.5.12\ext\php_opcache.dll
请注意,当路径包含空格时,您应该将其用引号括起来:
zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll"
试试看是否有帮助
【讨论】:
devside.net/wamp-server/… 你是否遵循了所有这些步骤? [特别是第3步] 在我的 phpinfo() 中它说启动并运行,所以我怎么知道它是否真的在运行? Windows 反斜杠最有可能被视为带引号的文字中的转义字符。即使在 Windows 上,在这些类型的语句中使用 unix 正斜杠也是正常的。并且 WAMPServer 不会也不应该安装在program files
中。以上是关于在 wamp 中为 php 启用 opcache的主要内容,如果未能解决你的问题,请参考以下文章
无法启用 CURL - Windows 7 64 位上的 WAMP - PHP 5.3.13 Apache 2.2.22
phpwebsocket - 未定义函数 socket_create() - 在 Windows/WAMP 上启用 php_sockets