当我在 PHP 中开发 REST API 时,我正在使用
application/json
输出,因此当我在浏览器中测试时遇到错误时,它们看起来像这样:
<b>Fatal error</b>: Uncaught exception 'Exception' with message 'PDO caught an error:
array(3) {
[0]=>
string(5) "42000"
[1]=>
int(1065)
[2]=>
string(15) "Query was empty"
}
当我得到大量堆栈跟踪和其他东西时,情况会变得更糟。那么我可以设置一个标志来告诉 PHP 我希望我的错误不被转义并以原始文本形式存在吗?
在您的 php.ini 中,您可以设置三种不同的设置来更改 HTML 错误的显示方式。
html_errors
error_prepend_string
在错误消息之前输出的字符串error_append_string
错误消息后输出的字符串我在我的开发环境中使用以下内容:
html_errors = On
error_prepend_string = "<pre>"
error_append_string = "</pre>"
可能有一些配置选项我找不到来执行此操作 - 我怀疑有,因为命令行上不存在 HTML。
一个肮脏的工作是将字符串穿过
html_entity_decode(strip_tags($str))
。
编辑 正如 Andy Pieters 所指出的(他显然比我更擅长阅读文档),有一个名为
html_errors
的配置选项来控制这一点。我会将这个答案留在这里,以防由于某种原因您无法修改它,但您可能应该接受他的答案。
如果您正在运行 CLI 并且只想暂时执行此操作,您可以在命令行上设置这些选项以避免编辑
php.ini
:
/usr/bin/php -d html_errors=0 -d error_prepend_string= -d error_append_string= example.php
这将在运行该脚本时隐藏错误消息中的所有 HTML(假设脚本本身不会重新启用它们),而无需编辑
php.ini
。