执行的 PHP 文件除非经过“修改”(符号链接 NFS 作为 Web 根目录挂载),否则会过期

执行的 PHP 文件除非经过“修改”(符号链接 NFS 作为 Web 根目录挂载),否则会过期

我们有一个 PHP 应用程序,它有 3 个 Web 服务器(运行 Nginx 和 Apache)。Web 服务器的目录根是指向 NFS 挂载的符号链接目录。例如:

web01 在 处有一个 NFS 挂载/data/webapp,它符号链接到/home/webapp。Apache 从 提供内容/home/webapp/www

我们还将ACP其用于 PHP 操作码缓存。部署代码时,我们将存档文件 SCP 到 NFS 服务器并提取它。

自从升级 RedHat 6 以来,当我们部署代码时,Web 服务器会执行“过时的”PHP 文件,直到touch在 PHP 文件上运行。我们认为这APC可能会造成问题,但即使在清除操作码缓存后,问题仍然存在。

关于如何诊断为什么执行陈旧的 PHP 代码,您有什么想法吗?

答案1

这看起来更像是编辑文件的问题。如果你使用 nginx 遇到此问题,我建议你查看一下你的配置打开文件缓存参数,但几乎同样的事情发生在 apache2 或 php 内部。服务器缓存文件句柄,当文件更改时完全忽略了使缓存无效的要点。

如果涉及 Apache,您可以通过发出 htcacheclean 命令并验证内容是否已更新来修复此问题。如果是这种情况,您还需要仔细阅读手册磁盘缓存。如果不是,您应该继续剥离 php 模块。

相关内容