花了我很长时间才弄清楚这是一个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]
在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
因为这对我来说是最简单的解决方案,并且默认情况下我需要禁用缓存。
参考资料