我敢肯定这是显而易见的,但我很困在这里。我有一个 LAMP 服务器(Centos 5.3,PHP 5.3.8),它一直工作没有问题。我修改并重新上传(通过 SFTP)一个特定的 PHP 脚本到服务器,但是当我重新加载页面时,旧脚本仍然运行。我可以看到新文件在那里并且时间戳和大小与新版本相匹配,但它总是输出好像文件未更改一样。我什至尝试用一个简单的替换它
<?php die('test'); ?>
测试文件,结果相同。这不是浏览器缓存问题(重新加载、不同的浏览器等都显示旧脚本,我可以传入$_GET
变量并作为旧脚本运行)。如果我重命名文件,它会以新名称正确呈现(使用新更改),并且系统会在原始位置正确抛出 404 错误。当我将它恢复为原始文件名时,它会恢复为旧版本。我认为这是一个电子加速器问题(运行 0.9.6.1)所以我清除了缓存(清空/var/cache/php-eaccelerator
)并重新启动了服务器但没有骰子。
是否还有其他可能导致服务器缓存旧脚本的原因?
编辑 - 解决方案!
好的,不出所料,这最终成为了一个我应该早点发现的特定于应用程序的问题。该应用程序设置了导致问题的“自定义覆盖”系统......基本上是为了使更新变得容易,但也允许客户自定义,系统设置了一个特殊/custom/
文件夹,该文件夹克隆了基础应用。在服务之前,Apache 显然会在自定义结构中检查一个相同位置的文件,并在它存在时提供它。基本上有一个自定义脚本上传到相关目录,它覆盖了我上传到主应用程序目录的任何文件。显然有一个覆盖脚本加载到自定义目录中。
@Dagon,感谢您禁用 eAccelerator 的建议。我确信这是我的问题的根源,我没有费心去检查.htaccess
。一旦我排除了这一点,我就开始思考得更清楚了。