在我的开发机器上,我设置PHP以显示所有错误(即display_errors
设置为on
)。不幸的是,PHP发送致命错误为text/html
,这使得读取调用堆栈有点痛苦,因为在HTML中忽略了空格。
对于致命错误,有没有办法让PHP发送页面为text/plain
?
答案 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
瞧,致命错误以纯文本形式呈现。