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 calledhtml_errors
.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.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 messageerror_append_string
String to output after an error messageI use the following in my development environment: