Apache 提供错误的页面

Apache 提供错误的页面

首先:这肯定是我见过的最奇怪的虫子之一,特别是它时有时无。

存在一个名为视图.php另一个页面名为保存.php。当我请求时,错误就会出现保存.php- 我反而得到了视图.php. 请求标头显示保存.php,这种情况在 Firefox、IE、Chrome、Opera 和 Safari 中都会发生。这种情况一直发生,除非——奇怪的是——我打开文件并保存。我没有对它进行任何更改,只是保存。保存后,我可以发出完全相同的请求,它会提供保存.php就像一切都没有发生过一样。

我目前正在从 svn 存储库导出(只是一个简单的命令)。如果我在未进行任何更改后进行导出,则错误会重新出现。如果我进行更改(对完全不相关的页面),并将其提交到存储库,然后导出,则错误通常会消失。但是,同样的事情可能发生在两个不同的页面(也与更改的页面无关)上,也可能不会发生。svn export http://server/repository target

我没有使用任何类型的缓存(没有 php 缓存、浏览器缓存或 apache 缓存)。

SVN 版本:Windows 机器(开发机器)上带有 AnkhSVN 的版本为 1.6.9,存储库机器和测试机器(我运行导出命令的地方)上都安装了 1.4.2。

除了怀疑 svn 出了问题之外,我没有其他想法。

答案1

你为什么不尝试重命名这些文件呢?重命名两个文件,添加某种前缀,然后重试。这可能会消除任何错误的重定向/inode 混淆(也许)。

确保未启用任何缓存。检查 Apache 中的模块并卸载任何缓存模块。确保 PHP 中的 APC 扩展未加载 (phpinfo)

尝试使用svn checkout而不是svn export。开始测试,当你注意到错误行为时,执行svn stat来查看是否有任何变化。从技术上讲,checkout和之间应该没有区别,export只是checkout更有用,因为它允许就地更新。但是checkout你想在你的 vhost 配置中有类似以下内容。

<LocationMatch "\.svn.*">
 Order deny,allow
 Deny from all
</LocationMatch>

最后但并非最不重要的一点是,从新的 HTTP 配置开始。备份配置并重新安装 Apache/PHP 包。这应该会生成默认配置。然后,添加简单的配置更改以便能够为 PHP 文件提供服务。一旦您可以毫无问题地看到两个文件,就可以开始测试您的问题。然后逐渐开始从您保存的配置中添加配置部分,直到它开始失败。您添加的最后一部分就是导致它的原因。

答案2

我当然绝不尽管运行了几个中小型 LAMP 站点,但我从未听说过类似的事情。

除了怀疑 svn 出了问题之外

检查 save.php 的内容是否被 save.php 替换有多难?但这本身并不能解释为什么它会随机发生。

在复制错误时,您是否嗅探过流量以确保它不是由于重定向或缓存造成的?

提供错误内容后,访问和错误日​​志会显示什么?

C。

答案3

我对 mod_rewrite 的了解并不多。无论是否安装了 mod_rewrite,我都建议从 SVN 中删除 save.php 和 view.php,然后使用单独的提交重新导入它们。我根据自己获得的一些知识,了解到修订版本在哪里损坏,移动它们或删除并重新导入可以解决问题。我知道这不是一个优雅的(建议的)解决方案。

我希望这有帮助。

谢谢你,
扎卡里

相关内容