如何告诉 PHP 将异常转储为原始文本而不是 HTML?

问题描述 投票:0回答:4

当我在 PHP 中开发 REST API 时,我正在使用

application/json
输出,因此当我在浏览器中测试时遇到错误时,它们看起来像这样:

<b>Fatal error</b>: Uncaught exception 'Exception' with message 'PDO caught an error:
array(3) {
  [0]=&gt;
  string(5) &quot;42000&quot;
  [1]=&gt;
  int(1065)
  [2]=&gt;
  string(15) &quot;Query was empty&quot;
}

当我得到大量堆栈跟踪和其他东西时,情况会变得更糟。那么我可以设置一个标志来告诉 PHP 我希望我的错误不被转义并以原始文本形式存在吗?

php error-handling
4个回答
9
投票

这是一个

php.ini
设置,称为
html_errors


7
投票

在您的 php.ini 中,您可以设置三种不同的设置来更改 HTML 错误的显示方式。

我在我的开发环境中使用以下内容:

html_errors = On
error_prepend_string = "<pre>"
error_append_string = "</pre>"

0
投票

可能有一些配置选项我找不到来执行此操作 - 我怀疑有,因为命令行上不存在 HTML。

一个肮脏的工作是将字符串穿过

html_entity_decode(strip_tags($str))

编辑 正如 Andy Pieters 所指出的(他显然比我更擅长阅读文档),有一个名为

html_errors
的配置选项来控制这一点。我会将这个答案留在这里,以防由于某种原因您无法修改它,但您可能应该接受他的答案。


0
投票

如果您正在运行 CLI 并且只想暂时执行此操作,您可以在命令行上设置这些选项以避免编辑

php.ini
:

/usr/bin/php -d html_errors=0 -d error_prepend_string= -d error_append_string= example.php

这将在运行该脚本时隐藏错误消息中的所有 HTML(假设脚本本身不会重新启用它们),而无需编辑

php.ini

© www.soinside.com 2019 - 2024. All rights reserved.