停止在 MAMP 中缓存 PHP 5.5.3

用 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的缓存选项甚至不存在,而是被自动禁用。

64749 次浏览

禁用 OPCache

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

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

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

我在主 PHP 中添加了 Opcache _ reset () ;来停止这种缓存。

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

剪辑

原来还有一个 /Applications/MAMP/bin/php/php5.5.3/conf/php.ini。它 如果我在外面发表评论就行了。

1)/Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2)设置 opcache.revalid_ freq = 0
3)重新启动 MAMP < br >

花了大约1个小时试图弄清楚它是什么,这是一件痛苦的事情。

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

  opcache.revalidate_freq=0
opcache_reset();

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

opcache.enable=0

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

哦,天哪,我真高兴我找到了这条线!我在扯头发!我昨天刚刚升级了 MAMP,直到今天才注意到这个缓存问题,当时我正在处理一个项目。我以为我疯了。 我只是修改了文件 opcache.able = 0的底部“/Applications/MAMP/conf/php5.5.3/php.ini”

我花了这么长时间才发现是 MAMP 的问题!为什么 OPcache 会默认启用——并且需要 php.ini 修补才能禁用——在一个应该用于测试网站的应用程序中?无论如何,我通读了这整个线程,并尝试了各种解决方案。

以下是我关于每个解决方案如何工作以及选择解决方案时的注意事项的说明。

每个解决方案都是独立工作的,不需要冗余。


网页代码解决方案

Opcache _ reset () ;

<?php opcache_reset(); ?>
  • 必须在网页代码中添加。
  • 强制重新加载所有脚本。
  • 无需重新启动 MAMP 服务器即可工作。

服务器配置解决方案

重要提示: /Applications/MAMP/bin/php/php5.5.3/conf/php.ini中使用 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
  • 必须在 php.ini[OPcache]下添加。
  • 禁用 OPcache。
  • 需要重新启动 MAMP 服务器。

Revalid_ 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
  • 修改 php.ini[OPcache]下的 opcache.revalidate_freq
  • 使 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
  • php.ini中注释掉整个 [OPcache]部分。
  • 从 PHP 服务器删除 OPcache。
  • 需要重新启动 MAMP 服务器。

考虑因素

如有以下情况,请选择网页编码方案:

  • 您只需要强制为特定项目刷新脚本
  • 您不希望重新启动 MAMP 服务器
  • 你不会想编辑 php.ini 的

如果下列情况,请选择服务器配置解决方案:

  • 您希望在默认情况下禁用缓存,而不是在每个项目中都必须这样做
  • 你很擅长编辑 php.ini

我个人更喜欢 enable=0,因为它对我来说是最简单的解决方案,而且我需要默认禁用缓存。


参考文献

MAMP 3.0.7.2 for OS X

看起来这终于是一个 GUI 选项了。

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

C: MAMP conf php5.6.3 php.ini

它被列在文件的最底部。

我发现的另一个问题,在 QNAP NAS TS-431上。这个缓存也是启用的,如果您正在处理动态更改的文件,或者尝试在其上进行开发,那么您将会损失惨重。就像其他评论一样,把它们注释掉。设置位于:

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

同样,您将在文件底部找到设置。

打开你的 Mamp 面板 在右上角点击“首选项” 一个弹出将打开,有一个选项“关闭”的 php 缓存。 它像魅力,不需要修改任何其他文件。 enter image description here

对于那些使用 MAMP 6.x的用户,您必须在 UI 中禁用该设置,否则在下次重新启动 apache 时,MAMP 将覆盖您的 PHP 文件。

该设置在 PHP设置中,如下所示:

enter image description here

将默认的 OPcache设置更改为 off并单击 Save