停止在MAMP中为PHP 5.5.3缓存


123

在装有PHP 5.5.3的新Macbook上安装MAMP。

重新加载和刷新无济于事。依然没有。Google绕了几分钟,试图找出问题所在,然后回来刷新。有用。有没有搞错?

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

网络标签显示的是HTTP 200请求,因此index.php文件中的任何新HTML都可以正常显示,但是服务器需要呈现的新PHP会延迟,并且直到经过预定的一组时间(我不知道如何)后才呈现改变。这是怎么回事?

我也在Safari中进行了检查,因此绝对是服务器阻止文件渲染。

但是,有趣的事实是,如果我进入MAMP并将PHP版本更改为旧版本(PHP 5.2或类似版本),它将正常显示,而没有“缓存问题”。切换到PHP 5.5并挂断。在MAMP首选项中,5.5的缓存选项甚至不存在,并且会自动禁用。


4
我知道这不是解决问题的方法,但我个人不是MAMP的忠实拥护者,尤其是在安装自定义堆栈非常简单的情况下-这是一个使用自制程序安装堆栈的快速指南:github .com / josegonzalez / homebrew-php
mewm 2013年

@mewm我没有意识到这可能是如此简单。干杯! 只需几次按键,就可以使用它来使用nginx。learnaholic.me/2012/10/10/...
willdanceforfun

Answers:


207

禁用OPCache

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

我自己也遇到了同样的问题。默认情况下,PHP版本5.5.3的MAMP运行OPcache,但是您不能像使用较早版本的PHP 5.2.17一样在GUI中将其关闭。您必须在php.ini文件(MAMP / bin / php / [version] /conf/php.ini)末尾手动注释掉所有OPcache行,并确保停止并启动服务器以进行更改影响。

我更新了URI,所做的更改也可以通过更改php文件夹下的/ conf /来反映出来,但是MAMP似乎会在重启后忽略它们


4
我遇到了同样的问题,并通过注释掉opcache行来修复了它。您必须进入php.ini文件才能对此进行更改,这有点令人困惑。实际上,这很容易引起误解,因为您似乎在MAMP-> Preferences下拉框中提供了所有缓存选项。
JaredH

17
我想知道MAMP创作者在添加“炫酷功能”时正在思考的身体的哪一部分。
Sergii 2013年

我以为我的ModX安装有问题,但是不,您的答案似乎已解决。谢谢。除此之外,我还恢复了较旧的版本。现在,它运行得更好。
vr_driver 2013年

67
请注意,php.ini您要编辑的文件位于/ bin中,而不位于/ conf中。我的完整道路是/Applications/MAMP/bin/php/php5.5.3/conf/php.ini
赫斯基

我已经提交了错误报告,希望他们会在以后的版本中默认将其禁用:bugs.mamp.info/view.php?id=4296
Husky

38

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

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

编辑

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


1
注释掉/ bin目录中的OPcache对我有用!感谢那!
daveaspinall 2013年

在php.ini中谈到OPcache /Applications/MAMP/bin/php/php5.5.3/conf/php.ini什么也不做,但添加opcache_reset();index.php工作。
ДаниилПронин

26

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


2
这似乎有效。我喜欢实施此解决方案,而不是全部注释掉。但是有区别吗?
Ketri 2014年

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

适用于OS X的MAMP 3.0.7.2

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


这显然不会禁用OPCache。即使此设置为“关闭”,我的矿井仍处于活动状态。
AUCO

2

花费大约1个小时试图弄清楚是什么,这是痛苦的。

我只是在代码末尾添加了此代码,然后重新启动MAMP。

  opcache.revalidate_freq=0
  opcache_reset();

2

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

opcache.enable=0

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


为我的ubuntu服务器工作。谢谢。
Sinan Eldem 2014年

2

哦,我很高兴我找到了这个线程!我正在拔头发!我昨天刚刚升级了MAMP,直到今天进行项目时才注意到此缓存问题。以为我失去了理智。我只是在文件opcache.enable = 0的最底部更改了“ /Applications/MAMP/conf/php5.5.3/php.ini”


1

Windows版本的MAMP也是当前版本。

C:\ MAMP \ conf \ php5.6.3 \ php.ini

它列在文件的最底部。

我发现的另一个问题是在QNAP NAS TS-431上。此缓存也已启用,如果您正在处理动态更改的文件,或者尝试在其上进行开发,那么您将一发不可收拾。根据其他评论,只需将其注释掉即可。该设置位于:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.