Apache 不读取 PHP 文件的更改

Apache 不读取 PHP 文件的更改

我正在 CentOS6 服务器上使用 Apache 和 PHP 进行开发。当我对 PHP 文件进行更改(并保存)时,apache 似乎没有读取更改后的文件 - 它仍在处理我的旧 .php 文件。 5-10 分钟后,它将开始使用新文件。

有人可以告诉我如何强制 Apache 立即拾取更改后的 .php 文件吗?


更新:我将文件移动到 apache 服务器上,问题仍然存在(这不是 NFS 问题)。因此,Apache 似乎在几分钟内没有读取已更改的文件,令人困惑......

答案1

也许我和你有同样的问题,这是因为 php.ini 上的 opcache 配置。所以我将重新验证频率设置为 0

opcache.revalidate_freq=0

或禁用 opcache

opcache.enable=0

之后记得重新启动 Apache 服务器。

答案2

Apache 不会主动监视 PHP 和其他配置文件的更改。您需要告诉服务重新加载更改。

# service httpd reload

或完全停止并启动服务器:

# service httpd restart

另一方面,您可以通过在 httpd.conf 文件(通常在/etc/httpd/conf/httpd.conf)上启用 mod_status 并附加或取消注释以下内容来查看服务器何时重新加载数据:

<Location /server-status>
SetHandler server-status

Order Deny,Allow
Deny from all
Allow from .example.com
</Location>

其中“ Allow from”后面应该是您的域、IP、本地主机(如果您在同一台计算机上开发,则为最后一个)或它们的组合,所有这些都用空格分隔。

然后,如果您为该位置使用新创建的特殊处理程序/server-status(将其附加在 URL 服务器的末尾,如 中http://www.server.com/server-status),您将看到许多有关 Apache 服务器运行状态的信息,包括有关最后一个的信息。配置的时间。

答案3

我的开发机器上也遇到了类似的问题,PHP 代码的更新没有立即反映。我通过编辑php.ini opcache设置并将指令设置为解决了该问题

opcache.enable=0

答案4

如果您有php-fpm守护进程正在运行,您将需要再执行一步才能php.ini识别您的更改,仅重新启动 apache 是不够的。

在 Linux 上:

sudo 杀死 -USR2PID

指定主进程的PID php-fpm。您可以通过 找到该进程 ID ps auxwwf | grep php

我的 Amazon Drupal 实例随此php-fpm进程一起运行;我花了一段时间才弄清楚这一点。

相关内容