刚刚升级了 Bitnami WAMP 堆栈,现在我的 PHP 文件忽略了文件更改

Just upgraded Bitnami WAMP stack, now my PHP file are ignoring file changes

不确定我应该在此处输入什么代码。问题很简单,我在 HTML 或 PHP 中编辑了一些文本并重新加载页面 "localhost/mypage",但更改没有显示。

它时不时地发生变化,但我不知道是什么条件使它发生的。有时它会注意到变化,有时则不会。一开始以为是include files有关,看来不是。

我试过在站点 1 和站点 2(本地主机的两个子文件夹)上编辑文件并且行为是一致的。

我真的可以写出像这样简单的东西:

<?php echo 'this';?>

加载后在页面上看到,然后将其更改为

<?php echo 'that';?>

我仍然会在页面上看到 "this"。

我怀疑这是某种缓存问题,但我已将其放在所有文件的顶部:

    header('Expires: Sun, 01 Jan 2014 00:00:00 GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', FALSE);
    header('Pragma: no-cache');

根本没有任何区别。这仅在我从 Bitnami 7.0.31-1 升级时开始。我尝试了最新的,也降级到 7.2.24-0,它们是一样的。不知道发生了什么。甚至不知道从何开始。

如果网站不响应简单的文本更改,您会怎么做?

那是缓存的东西。您可以通过多种方式"solve"。

1) 刷新时不要只按 f5 而是使用 R+F5(缓存刷新)

2) 在开发者控制台中的大多数浏览器中,当您打开它时,您可以select 自动刷新缓存。

3) 当您打开开发控制台并右键单击页面上的刷新按钮时,您可以选择缓存刷新

这 3 种解决方案应该可以解决您的问题。大多数情况下,这种情况发生在 css 上,如果您没有缓存刷新,则不会显示更改。

显然有一个名为 "OPcache" 的缓存系统,PHP 可用,Bitnami 出于某种原因默认打开它(或者可能较新的 PHP 版本会这样做?不确定) .无论哪种方式,通过在 php.ini 文件中将 opcache.enable 显式设置为 0,该行为已停止。

OPCache

正如发帖人 not_a_generic_user 在他自己的评论中所说,OPCache 将是大多数人对此感到困惑的原因。这是 Bitnami 启用的东西(2)默认情况下是较新的版本。它已包含在 PHP 5.5.0 和更新版本中。

很好玩...但我不想要它 运行ning?

如前所述,您可以在 php.ini 中禁用 OPCache,但 opcache.enable 并不总是能完全修复它。要完全禁用 OPCache,请确保设置了以下所有设置

opcache.enable_cli = 0
opcache.enable     = 0

Bitnami 还提供以下内容:

#Include conf/pagespeed.conf
#Include conf/pagespeed_libraries.conf

将其放入您的 httpd.conf 以确保确定 ;)

我已经完成开发,如何使用 OPCache 来提高性能?

OPCache 有很好的文档说明哪个设置可以做什么,但普遍共识已达成以下默认设置(1)

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.enable = 1

我应该使用它吗?

对于大多数生产案例来说,没有理由不这样做,OPCache 是一个简单的缓存系统,对于大多数处理 php 代码的环境来说工作得很好。如果您决定使用 Laravel 或 Symfony 和许多其他框架,他们很可能已经为您的项目提供了建议设置。检查它是否受支持,如果支持,请启用它。

如果您想 运行 任何具有许多用户和活动连接的大型 OPCache 可能还不够。如前所述,这是一个非常简单的系统。

在我忘记之前还有一件事,您可以使用以下 php 功能清除缓存

opcache_reset()

来源

(1) https://www.php.net/manual/en/book.opcache.php(OPCache 文档)

(2) https://docs.bitnami.com/oci/infrastructure/lamp/administration/disable-cache/(Bitnami 关于缓存的声明)