2009-11-17 87 views
5

我已经将PHP应用程序安装到共享托管Web服务器上。我得到500 Internal Server Error。我似乎没有访问任何日志文件,所以我想要错误页面暂时提供错误的详细信息。如何显示PHP内部服务器错误的详细信息?

我知道如何在ASP.Net中做到这一点,但我不熟悉PHP。

回答

16

尝试:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

在文件的顶部。

+3

还检查文件权限。通常情况下,如果一个文件不可执行,它会抛出500错误。 – 2009-11-17 20:42:14

-1

“内部服务器错误”不是PHP错误(正如名称所述)。因此,您必须查看您的服务器日志(您无法访问它,因为它看起来),或者你无法从PHP做任何事情。

+2

-1,具体取决于服务器配置和软件PHP错误可能会显示为500秒。 – Dereleased 2009-11-17 20:44:02

+0

正确,实际上出于安全原因,许多共享主机将一个php错误转化为500作为压抑的一部分。 – 2009-11-17 20:45:46

+0

对不起,那么。 – Franz 2009-11-17 21:12:24

2

我怀疑你是从PHP那里得到这个错误。在共享主机上,应用程序的默认.htaccess配置更有可能导致错误。

我的猜测是一个mod_rewrite没有RewriteBase设置。

+0

这完全是可能的,调试时,'.htaccess'通常是我的第一个罪魁祸首,但他从未说过他使用的是Apache。 – Dereleased 2009-11-17 20:49:45

+0

@Dereleased - PHP + SharedHosting,我只是做了数学。如果是IIS,我会感到惊讶。 – 2009-11-17 21:35:34

1

看看在phpinfo();值是否有任何伸出...把它放在某处的代码,它应该显示一堆的PHP版本信息

4

如果杰里米·摩根的解决方案不起作用,尝试创建您自己的日志文件使用set_error_handler()。通常有关应用程序状态的信息($ GLOBALS等等)可能是足够的信息,但PHP将(至少尝试)传递有关错误发生的位置以及错误类型的各种信息。

此外,请尝试使用“分而治之”调试方法。从大约一半的文件开始,然后向上展开,如果它仍然崩溃或向下展开(如果它运行的话)。如果您不想删除您的代码,可以使用/* comment out */要删除的代码,也可以使用__halt_compiler()特殊指令让PHP忽略文件中的所有剩余数据。

最后,有一件事让我疯狂地试图修复它,这就是所谓的Byte Order Mark。 PHP在文件开始时评估该BOM,导致它发送输出,并在尝试发送标题等时导致问题。可能不是你的问题,但值得拥有的知识。

+1

用于提及BOM。 – chelmertz 2009-11-17 20:57:04

+1

另一个用于BOM的+1。当我第一次出发的时候,这让我非常适应! – 2009-11-19 08:20:54

相关问题