How can I tell PHP to dump exceptions as raw text

2019-01-19 13:59发布

When I'm developing my REST API in PHP I'm working with application/json output, so when I get errors while testing in the browser they look like this:

<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;
}

And it gets worse when I get large stack traces and stuff. So is there a flag I can set telling PHP that I want my errors unescaped and in raw text?

3条回答
祖国的老花朵
2楼-- · 2019-01-19 14:21

It is a php.ini setting called html_errors.

查看更多
你好瞎i
3楼-- · 2019-01-19 14:29

There may be some configuration option that I can't find to do this - I suspect there is, since the HTML is not present on the command line.

A dirty work around is to pass the strings through html_entity_decode(strip_tags($str)).

EDIT As Andy Pieters has pointed out (he is obviously better at reading docs than I am) there is a configuration option called html_errors to control this. I will leave this answer here in case for some reason you cannot modify this, but you should probably accept his answer.

查看更多
别忘想泡老子
4楼-- · 2019-01-19 14:37

In your php.ini you can set three different settings to change how HTML errors are displayed.

I use the following in my development environment:

html_errors = On
error_prepend_string = "<pre>"
error_append_string = "</pre>"
查看更多
登录 后发表回答