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]=>
string(5) "42000"
[1]=>
int(1065)
[2]=>
string(15) "Query was empty"
}
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?
It is a php.ini
setting called html_errors
.
In your php.ini you can set three different settings to change how HTML errors are displayed.
html_errors
error_prepend_string
String to output before an error message
error_append_string
String to output after an error message
I use the following in my development environment:
html_errors = On
error_prepend_string = "<pre>"
error_append_string = "</pre>"
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.