lamp——编辑 PHP 文件但不改变 web 输出——包括 die()

lamp——编辑 PHP 文件但不改变 web 输出——包括 die()

服务器是 Amazon Web Services 上的标准 Linux 服务器。Cent OS 5/Apache/PHP 5.3。无 APC。

它已经运行了一年多,但现在当我使用 vi 编辑服务器上的一些但不是全部 PHP 文件时,这些更改不会影响网络输出。

例如,我编辑 myfile.php 并在顶部放置一个 die(),但是当我在 Web 浏览器中加载页面时,我看到的不是 die(),而是如果没有 die() 则会显示的内容。svn 更新相关文件也无济于事。

文件位于与 /var/www/html 符号链接的 Amazon EBS 分区上。重申一下 - 这种方法长期以来一直运行良好。

重新启动 apache 和重新启动服务器都没有用。奇怪的是,只有部分文件有问题,而不是全部文件有问题。文件所有权/权限对于“好”文件和“问题”文件是相同的。

我不是 Linux 新手,但对此完全不知所措,在 Google 上也找不到任何东西。任何提示都将不胜感激!

答案1

这可能是因为使用了 PHP op-cache 吗?我见过几次这种奇怪的情况,op-cache 认为文件相同(没有更改),因此它提供相同的旧缓存内容。Apache 代理模块也是同样的道理,检查一下您的服务器上是否启用了该模块?

是否还存在影响网络服务器查看文件更改能力的文件系统问题?

我会先禁用所有 webserver 模块,检查是否有任何模块是导致问题的原因(可能不是全部,但至少是 mod_php、mod_proxy、mod_cgi,如果有的话),然后逐个启用。然后检查哪些 PHP 扩展处于启用状态并试用。

答案2

清除浏览器缓存并重试。我以前确实遇到过这个问题,浏览器缓存返回相同的数据,甚至在向您发送缓存页面之前都没有咨询远程服务器。

答案3

最终发现,这种怪异是由于 httpd conf 中的根路径设置得很奇怪,因为该站点是通过 ssl(端口 443)而不是端口 80 访问的,这意味着我们添加的包含 die() 的页面实际上并没有被调用,而是在另一个开发系统上被调用。但是这个开发系统上的包含仍然被包含,所以我们放入其中的 die() 正按预期消失。该开发系统上最近的配置文件更改导致了这个问题。

换句话说:用户错误。去 LAMP 吧!

相关内容