在 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的主要内容,如果未能解决你的问题,请参考以下文章

在 WAMP 中启用 OpenSSL

无法启用 CURL - Windows 7 64 位上的 WAMP - PHP 5.3.13 Apache 2.2.22

phpwebsocket - 未定义函数 socket_create() - 在 Windows/WAMP 上启用 php_sockets

Wamp - config.inc.php 中缺少行

如何在 Eclipse 中为 PHP 核心函数启用自动完成/语法高亮?

如何在 WAMP 服务器 (v2.5) 中启用 https (localhost) url? [复制]