我花了很长时间才弄清楚这是一个 MAMP 问题!为什么在应该用于测试网站的应用程序中默认启用 OPcache - 并且需要 php.ini 修补才能禁用?无论如何,我通读了整个线程并尝试了各种解决方案。
以下是我对每种解决方案如何工作以及选择解决方案的注意事项的说明。
每个解决方案都独立工作;不需要冗余。
网页代码解决方案
opcache_reset();
<?php opcache_reset(); ?>
- 必须在网页代码中添加。
- 强制重新加载所有脚本。
- 无需重新启动 MAMP 服务器即可工作。
服务器配置解决方案
重要提示:使用php.ini
文件/Applications/MAMP/bin/php/php5.5.3/conf/php.ini
而不是
/Applications/MAMP/conf/php5.5.3/php.ini
. 如果您使用的是不同版本的 PHP,请进行相应调整。
启用=0
[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
enable=0
- 必须在
[OPcache]
in下添加php.ini
。
- 禁用 OPcache。
- 需要重新启动 MAMP 服务器。
opcache.revalidate_freq=0
[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.enable_cli=1
opcache.revalidate_freq
在[OPcache]
中修改php.ini
。
- 使 OPcache 每 0 秒而不是每 60 秒检查一次更新。
- 需要重新启动 MAMP 服务器。
注释掉 [OPcache]
;[OPcache]
;zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
;opcache.memory_consumption=128
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=4000
;opcache.revalidate_freq=60
;opcache.fast_shutdown=1
;opcache.enable_cli=1
- 注释掉 中的整个
[OPcache]
部分php.ini
。
- 从 PHP 服务器中删除 OPcache。
- 需要重新启动 MAMP 服务器。
注意事项
在以下情况下选择网页代码解决方案:
- 您只需要强制刷新特定项目的脚本
- 您不想重新启动 MAMP 服务器
- 你不想编辑 php.ini
在以下情况下选择服务器配置解决方案:
- 您希望默认禁用缓存,而不是在每个项目中都这样做
- 您对编辑 php.ini 感到满意
我个人更喜欢enable=0
它,因为它对我来说是最简单的解决方案,而且我需要默认禁用缓存。
参考