如何强制PHP以纯文本形式呈现致命错误?

时间:2012-03-15 00:08:42

标签: php

在我的开发机器上,我设置PHP以显示所有错误(即display_errors设置为on)。不幸的是,PHP发送致命错误为text/html,这使得读取调用堆栈有点痛苦,因为在HTML中忽略了空格。

对于致命错误,有没有办法让PHP发送页面为text/plain

3 个答案:

答案 0 :(得分:3)

http://php.net/manual/en/function.set-error-handler.php设置您自己的错误处理程序,然后设置所需的mime-type或输出<pre></pre>个标记之间的所有内容。

答案 1 :(得分:0)

不幸的是,你无法拦截PHP中的致命错误。正如Mike Purcell所说,关闭PHP配置中的html_errors可能会让您在没有格式化的情况下返回纯错误消息。

答案 2 :(得分:0)

PHP.net的set_error_handler()条目上的few people in the comments建议使用register_shutdown_function()来捕获致命错误。果然,它奏效了。

我创建了一个文件error.php,其中包含以下内容:

register_shutdown_function('plain_text_error');

function plain_text_error() {
  if ($e = error_get_last()) {
    header('Content-Type: text/plain');
  }
}

然后将以下内容添加到我的开发者网站的.htaccess文件中:

php_value auto_prepend_file /path/to/error.php

瞧,致命错误以纯文本形式呈现。