124

在带有 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 的缓存选项甚至不存在并且被自动禁用。

4

10 回答 10

209

禁用 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 会在重新启动后忽略这些

于 2013-10-02T06:16:45.677 回答
39

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

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

编辑

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

于 2013-10-16T18:49:13.340 回答
26

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

于 2013-11-28T03:19:30.147 回答
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]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它,因为它对我来说是最简单的解决方案,而且我需要默认禁用缓存。


参考

于 2014-08-02T04:03:30.127 回答
4

适用于 OS X 的 MAMP 3.0.7.2

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

于 2014-10-26T12:53:01.990 回答
2

花了大约 1 小时试图弄清楚它可能是什么是痛苦的。

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

  opcache.revalidate_freq=0
  opcache_reset();
于 2013-12-15T19:10:28.790 回答
2

编辑“/Applications/MAMP/conf/php5.5.3/php.ini”,搜索【OPcache】,直接在下面添加这段代码:

opcache.enable=0

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

于 2014-01-04T19:15:08.607 回答
2

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

于 2014-01-20T21:27:24.317 回答
1

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

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

它列在文件的最底部。

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

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

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

于 2015-07-31T11:52:11.057 回答
-1

打开右上角的 Mamp 面板,单击“首选项”会打开一个弹出窗口,有一个“关闭”php 缓存的选项。它就像魅力一样工作,无需修改任何其他文件。 在此处输入图像描述

于 2022-01-10T15:13:15.243 回答