我的.htaccess文件中有一些ErrorDocuments
设置错误,例如404,401,403等,这些错误都会重定向到我的错误页面,但{500}错误的ErrorDocument
设置永远不会当PHP报告500时显示.500代码被发送到浏览器并且输出为空。我是否需要做一些特别的事情来启用500错误文档以用于PHP?
我的指示如下:
ErrorDocument 401 /errorpage.php?error=401
ErrorDocument 403 /errorpage.php?error=403
ErrorDocument 404 /errorpage.php?error=404
ErrorDocument 500 /errorpage.php?error=500
我查看了php.ini并且看不到任何明显会覆盖Apache设置的内容,而且我的httpd.conf中也没有ErrorDocument
指令。我应该在其他任何地方寻找?
提前致谢。
答案 0 :(得分:2)
请参阅this回答一个非常相似的问题。基本上,PHP几乎不会触发500。
答案 1 :(得分:0)
您可能需要在Apache conf链中添加ErrorDocument声明。如果将其添加到vhost conf中,则可能无法调用它。
答案 2 :(得分:0)
我在使用codeigniter和Imagick时遇到了同样的问题。当出现问题时,imagick设置了500 HTTP错误,在这种情况下,没有显示Codeigniter的自定义500消息。
我通过向所有Imagick函数添加try-catch解决了这个问题。检查500问题出现在哪里,然后在那里添加try-catch。至于
ErrorDocument 500 /errorpage.php?error=500
有些人声称这解决了他们类似的问题,其他人说,当Apache将控件移交给PHP时,我会在网上读到有关同样问题的内容。可能有些PHP代码将Headers设置为500,那就是可能导致浏览器显示其自定义500错误消息。
答案 3 :(得分:-1)
我不相信Apache会让你运行PHP文件500错误,因为错误页面可能会产生错误。尝试将500错误呈现给HTML文件并指出您的指令。