4

我敢肯定这是显而易见的,但我很困在这里。我有一个 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。一旦我排除了这一点,我就开始思考得更清楚了。

4

1 回答 1

2

这最终成为一个本地化问题。正如我在问题的编辑中提到的那样,应用程序设置了一个导致问题的“自定义覆盖”系统......基本上是为了使更新变得容易,但也允许客户自定义,系统设置为一个特殊的 /custom/ 文件夹,它克隆了基本应用程序的文件夹结构。在服务之前,Apache 显然会在自定义结构中检查一个相同位置的文件,并在它存在时提供它。基本上有一个自定义脚本上传到相关目录,它覆盖了我上传到主应用程序目录的任何文件。显然有一个覆盖脚本加载到自定义目录中。

于 2012-09-19T06:37:34.570 回答