在运行于IIS7集群上的PHP中调试500内部服务器错误

16

最近,我的ISP将我们的网站切换到了一个IIS7.0高可用性集群。网站运行在PHP5.2.1上,我只能上传文件(所以没有注册表调整)。之前我已经测试过这个网站并且一切似乎都正常,但现在结帐页面出现了以下错误:

500 - 内部服务器错误。 您正在查找的资源存在问题,无法显示。

作为错误信息来说,这并不是很有信息量。我已经尝试过:

ini_set('display_errors', 1);
ini_set('error_log', $file_php_can_write_to );

但两者似乎都没有任何作用。

有人知道如何获得更好的调试输出吗?

3个回答

37

编辑:看起来我们在serverfault上有一个类似的问题。去看看吧。

关闭IIS7的自定义错误将允许您的应用程序向远程客户端发送错误响应,而不会被IIS7的自定义错误模块审查。

您可以通过运行“开始>运行>inetmgr.exe”从IIS7管理工具中完成此操作,在左侧树形视图中选择您的网站/应用程序/虚拟目录,在“错误页面”图标上单击,单击“编辑功能设置”操作,然后选择“详细错误”。

来源


这确实改变了事情,但现在我得到了一个纯文本:“由于发生内部服务器错误,无法显示页面。” - Matthijs P
2
+1 我只是在使用经典 ASP,并遇到了这个问题... 相同的答案对我也适用。 - Lynn Crumbling
1
在使用 PHP 时,请确保您的代码包含 error_reporting(E_ALL); ini_set('display_errors', '1'); 或者将 php ini 设置为显示错误。它在答案中的链接中提到了,但我忘记了,所以在这里再次提一下。 - HMR
极端情况下,但在WordPress的情况下,导航后台(即登录页面)会导致空白500页,而使用启用了“error_reporting”和“display_errors”的前端页面(未登录)则显示错误和源代码(文件+行号)。 - Frederik Struck-Schøning
除了那个边缘情况,我们所有的WordPress网站都在一个旧服务器上,直到我从“本地请求详细错误”和“远程请求自定义错误页面的详细错误”切换到“详细错误”才恢复正常。 - Patrick Borkowicz

1
当您更改服务器时,无法加载应用程序非常常见。我已经解决了这个问题,运行php.exe而不是在浏览器上加载您的应用程序:
1)使用命令行运行它> C:\php\php.exe或者
2)运行Windows资源管理器,查找它,并双击c:\php\php.exe.
3)您会看到哪些DLL文件存在冲突并导致500错误。
4)通过找到适合您的Windows版本的正确DLL文件来解决冲突,然后您就可以通过浏览器查看您的应用程序了。
祝好运。

-4

IIS会这样做,这真的很烦人,我找不到解决方法,这就是导致我在本地机器上切换到Apache服务器的原因。不幸的是,如果您无法控制服务器,则最好的选择是在apache设置上本地测试或要求主机允许错误消息。

我做了一些谷歌搜索,this这似乎是您需要的。但愿当我尝试运行IIS时它已经存在。


我个人更喜欢Apache,但这并不是一个很有帮助的答案。 - icedwater
1
提出替代的Web服务器并不是很有帮助。如果原帖作者没有那种控制权怎么办? - Clarkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接