Я использую PHP с Apache в Ubuntu 12.10. Ошибки по какой-то причине не отображаются в браузере, и я не могу это понять.
У меня в моем php.ini
файл:
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On
display_startup_errors = On
log_errors = On
Я также уверен, что отредактировал правильный ini-файл, проверив его с помощью php_ini_loaded_file()
. Я также могу проверить правильность установки значений, выполнив в моем скрипте следующие действия:
echo ini_get("display_errors"); // Outputs 1
echo ini_get("display_startup_errors"); // Outputs 1
echo ini_get("log_errors"); // Outputs 1
echo ini_get("error_reporting"); // Outputs -1
Я пробовал, кажется, все возможные комбинации этих настроек (и перезапускал Apache после каждого изменения), и это просто не выводит ошибок. Я тоже не использую ini_set
в любом месте сценария. Устанавливается только из ini файла.
Есть идеи, почему не отображаются ошибки?
Обновить:
Оказывается это ЯВЛЯЕТСЯ показывает некоторые ошибки, но не все.
echo 'hello''; // Shows syntax error
trigger_error("E_USER_WARNING", E_USER_WARNING); // shows error
trigger_error("E_USER_NOTICE", E_USER_NOTICE); // shows error
trigger_error("E_USER_ERROR", E_USER_ERROR); // Doesn't show error
Оказывается, проблема заключалась в сочетании PEBKAC и Content-type
заголовок. При выполнении:
header('Content-Type: application/xhtml+xml; charset=UTF-8');
тогда браузер ожидает допустимый XML-документ. Когда возникают определенные ошибки, это приводит к тому, что документ вообще не отображается в браузере, даже если контент был отправлен. Просмотр источника страницы показывает, что ошибка действительно была успешно отправлена в браузер вместе со всем остальным кодом. Моя проблема заключалась в том, что я предполагал, что вообще ничего не слышно, потому что все, что я видел, было белым.