Назад | Перейти на главную страницу

Ошибки PHP не отображаются

Я использую 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-документ. Когда возникают определенные ошибки, это приводит к тому, что документ вообще не отображается в браузере, даже если контент был отправлен. Просмотр источника страницы показывает, что ошибка действительно была успешно отправлена ​​в браузер вместе со всем остальным кодом. Моя проблема заключалась в том, что я предполагал, что вообще ничего не слышно, потому что все, что я видел, было белым.