在MAMP中停止PHP 5.5.3的缓存

时间:2013-09-29 00:42:01

标签: php caching mamp php-5.5

在使用PHP 5.5.3的新Macbook上安装MAMP。

重新加载并刷新什么都不做。依然没有。谷歌在几分钟内试图找出问题所在,回过头来刷新。有用。有没有搞错?

我进入了php.ini并禁用了所有新的OPcache并将默认缓存时间设置为0.为文档添加标头以强制不缓存。还是同样的问题。到底发生了什么事?

网络选项卡显示HTTP 200请求,因此index.php文件中的任何新HTML都可以正常呈现,但是需要由服务器呈现的新PHP会延迟并且在某个预定时间之前不会呈现传递我不知道如何改变。发生了什么事?

我在Safari中也检查了这一点,所以它绝对是一个服务器,它使文件不被渲染。

有趣的是,如果我进入MAMP并将PHP版本更改为旧版本(PHP 5.2或其他版本),它将正常呈现,没有“缓存问题”。切换到PHP 5.5,它就会挂断。在MAMP中,5.5的缓存选项甚至不存在,并且会自动禁用。

9 个答案:

答案 0 :(得分:206)

禁用OPCache

MAMP现在默认打开OPCache,您可以通过编辑php.ini文件来禁用它。确保编辑正确的php.ini。

我自己遇到了同样的问题。 PHP版本5.5.3的MAMP默认运行OPcache,但你不能像使用旧的PHP版本5.2.17那样在GUI中关闭它。你必须手动注释掉php.ini文件末尾的所有OPcache行(MAMP / bin / php / [version] /conf/php.ini),并确保停止并启动服务器以进行更改效果。

我更新了URI,通过更改/ conf /下的php文件夹可以反映更改,但似乎MAMP会在重启后忽略这些

答案 1 :(得分:39)

我在主PHP中添加了 opcache_reset(); 来停止此缓存。

php5.5.3/conf/php.ini删除它对我没有任何帮助。

修改

原来还有一个/Applications/MAMP/bin/php/php5.5.3/conf/php.ini。它 如果我在那里评论那就有用。

答案 2 :(得分:26)

1)在/Applications/MAMP/bin/php/php5.5.3/conf/php.ini中 2)设置opcache.revalidate_freq = 0
3)重启MAMP

答案 3 :(得分:10)

我花了很长时间才弄明白这是一个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,因为它对我来说是最简单的解决方案,我需要默认禁用缓存。


参考

答案 4 :(得分:4)

MAMP 3.0.7.2 for OS X

看起来这最终是一个GUI选项。 MAMP 3.0.7.2 for Mac OS X

答案 5 :(得分:3)

花费大约1小时的时间来试图弄清楚它会是什么样的痛苦。

我刚刚在代码末尾添加了这个并重新启动MAMP。

  opcache.revalidate_freq=0
  opcache_reset();

答案 6 :(得分:2)

编辑“/Applications/MAMP/conf/php5.5.3/php.ini”,搜索[OPcache]并直接在其下添加此代码:

opcache.enable=0

这将在MAMP服务器中使用PHP时禁用opcache。

答案 7 :(得分:2)

哦,我很高兴我找到了这个帖子!我把头发拉了出来!我刚刚升级了MAMP,直到今天才开始处理项目时没有注意到这个缓存问题。以为我失去了理智。 我刚刚更改了“/Applications/MAMP/conf/php5.5.3/php.ini”文件的底部opcache.enable = 0

答案 8 :(得分:1)

这也是Windows版MAMP的最新版本。

  

C:\ MAMP \ CONF \ php5.6.3 \ php.ini中

它列在文件的最底部。

我发现的另一个问题是在QNAP NAS TS-431上。此缓存也已启用,如果您正在使用动态更改文件,或尝试在其上进行开发,您将会剥离您的头发。根据其他评论,只需将其评论出来。该设置位于:

  

控制面板/应用程序/ Web服务器/ PHP.ini维护。

再一次,您将在文件底部找到设置。