Вывод ошибок разных уровней в PHP

  • 01.05.2019

PHP - это достаточно свободный язык программирования, и это, на мой взгляд, большой минус. Главным недостатком здесь является то, что некоторые конструкции, которые в других языках сразу же отключат выполнение программы, в PHP является нормой и вполне допустимыми. Но если Вы хотите писать код изначально грамотно, то Вам необходимо знать о том, как выводить ошибки разных уровней .

В PHP есть несколько уровней ошибок , которые представлены в таблице ниже:

E_WARNING Различного рода предупреждения. Например, если функция требует 3 параметра, а Вы передаёте только 2 , то будет как раз ошибка уровня E_WARNING .
E_NOTICE Примерно то же самое, что и E_WARNING , но ошибки это очень мелкие, и они лишь могут стать причиной ошибок в будущем. Пример: использование неинициализированной переменной. Могу сказать, что данный уровень ошибок встречается практически в каждом мало-мальски сложном скрипте.
E_DEPRECATED Данный уровень ошибок возникает при использовании устаревших конструкций, например, при вызове какой-нибудь старой функции.
E_PARSE Ошибка синтаксического характера. Например, забыли поставить круглую скобку.
E_ERROR Ошибка, которая нам хорошо знакома. Как правило, мы её видем чаще всего. Самый простой пример - это вызов несуществующей функции.
E_ALL Все ошибки.

На большинстве серверов стоит вывод ошибок уровня E_WARNING, E_PARSE и E_ERROR . То есть очень грубые замечания и фатальные ошибки. Если Вы хотите программировать профессионально, то контроль только таких ошибок не достаточен.

error_reporting(E_ALL);
?>

И так нужно писать перед началом каждого скрипта. Если данный способ сильно не удобен, и Вы имеете доступ к php.ini , то в этом файле найдите директиву error_reporting и поставьте у неё значение E_ALL .

Если Вы с выводом такого уровня ошибок в PHP напишите код без единого замечания, то, значит, Вы создали, как минимум, неплохой продукт. Когда будете выкладывать уже на хостинг, то рекомендую данный уровень ошибок стереть, чтобы они не появлялись время от времени. Ведь PHP тоже обновляется и сегодня новые конструкции завтра могут уже устареть. И чтобы не вызывать ошибку уровня E_DEPRECATED , рекомендую отключать отображение подобных ошибок.

Сегодня рассмотрим несколько методов включения вывода ошибок в php.

Любой, даже самый опытный, программист регулярно допускает ошибки в коде. Пусть это будут мелкие опечатки или серьёзные провалы в алгоритме, не важно, отслеживание ошибок очень важная часть в разработке. Ниже описаны несколько способов отслеживания ошибок в php коде.

Способ первый. Включение вывода ошибок в php файле.

Вы можете включить вывод ошибок непосредственно в самом файле, где вы пишете код. Для этого поместите в его начало следующие строки:

ini_set("display_errors", 1); ini_set("display_startup_errors", 1); error_reporting(E_ALL);

ini_set ("display_errors" , 1 ) ;

ini_set ("display_startup_errors" , 1 ) ;

error_reporting (E_ALL ) ;

После этого просто запустите файл, если в коде будут ошибки, то они отобразятся на странице.

Способ второй. Включение отображения ошибок в файле php.ini.

Так же, вы можете включить вывод ошибок в конфигурации php, тогда они будут выводиться не только при запуске конкретного файла, а во всех файлах php. Для этого найдите файл php.ini в файловой системе вашего сервера и внесите в него следующие строки:

error_reporting = E_ALL display_errors = On display_startup_errors = On

error_reporting = E_ALL

display_errors = On

display_startup_errors = On

После сохранения изменений в файле перезагрузите ваш сервер и изменения вступят в силу.

Способ третий. Включение вывода ошибок в файле.htaccess.

Ещё одним способом включения ошибок является внесение изменений в файл.htaccess. Для этого найдите данный файл в файловой системе вашего сайта и внесите в него следующие строки:

php_value display_errors 1 php_value display_startup_errors 1 php_value error_reporting E_ALL

php_value display _ errors1

php_value display_startup _ errors1

php_value error_reporting E_ALL

Будьте внимательны, так как некоторые CMS системы имеют ещё один файл под названием htaccess.txt, который служит образцом для внесения корректировок. Вам необходимо изменить именно файл.htaccess, в противном случае изменения не будут ни как влиять на вывод ошибок.

Этими тремя способами вы можете включить вывод ошибок в своём проекте, написанном на php. Однако помните, что вывод ошибок стоит включать только на этапе разработки или при отслеживании ошибки. Включать данную функцию когда ваш проект уже вышел в продакшн крайне не желательно, не думаю что ваши пользователи обрадуются, когда вместо желаемого контента на странице будут отображены ошибки.


Разберёмся как сделать включение / отключение показа ошибок на сайте. Через админку и через файл htaccess.

Показ ошибок (Notice, Warning, Fatal Error) это важная и нужная функция, хорошо что она есть! Иначе бы вебмастера месяцами искали вручную ошибки в коде своего сайта.

Как включить показ ошибок из админки Joomla 3?

Для этого в админке Joomla переходим "Система - Общие настройки".

Переходим на вкладку "Сервер", там увидите опцию "Сообщения об ошибках". Выбирайте режим "Максимум".

Сохраняем.

После этого на страницах сайта будут появляться сообщения об ошибках, если таковые имеются. Это полезно, если где-то на сайте у вас появляется белый экран.

После включения показа сообщений об ошибках на белом экране вы увидите тип ошибки и её описание.
По этому описанию можно найти решение в поиске Яндекса или Гугла.

Включение показа ошибок php через configuration.php

Если нет доступа к админке, или она не работает, то показ ошибок можно включить через файл configuration.php, который находиться в корневой папке вашего сайта.

В нём есть директива

public $error_reporting = "default";

Чтобы включить показ ошибок, измените значение default на maximum

Как включить показ ошибок через.htaccess

Если у вас не Joomla, а свой скрипт или по каким то причинам не получается включить сообщения об ошибках первыми двумя способами, то это можно сделать через файл.htaccess, который также находится в корневой папке вашего сайта.

Открываем.htaccess - обратите внимание точка впереди. Если у вас нет такого файла, то создайте его.
В CMS системах он обычно называется htaccess.txt и его достаточно просто переименовать в.htaccess

В самом верху добавляем строчку:

php_flag display_errors on

А строчка:

php_flag display_errors off

выключает показ ошибок.

Какие сообщения об ошибках php бывают?

Самые частые это:

Notice - уведомление о незначительных ошибках в коде. Обычно работоспособность сайта при этом сохраняется.

Просто в шапке выходят такие вот уведомления.

Warning - предупреждение о более серьёзных ошибках. Иногда при таком предупреждении работоспособность сайта также сохраняется, иногда белый экран.


Разберёмся как сделать включение / отключение показа ошибок на сайте. Через админку и через файл htaccess.

Показ ошибок (Notice, Warning, Fatal Error) это важная и нужная функция, хорошо что она есть! Иначе бы вебмастера месяцами искали вручную ошибки в коде своего сайта.

Как включить показ ошибок из админки Joomla 3?

Для этого в админке Joomla переходим "Система - Общие настройки".

Переходим на вкладку "Сервер", там увидите опцию "Сообщения об ошибках". Выбирайте режим "Максимум".

Сохраняем.

После этого на страницах сайта будут появляться сообщения об ошибках, если таковые имеются. Это полезно, если где-то на сайте у вас появляется белый экран.

После включения показа сообщений об ошибках на белом экране вы увидите тип ошибки и её описание.
По этому описанию можно найти решение в поиске Яндекса или Гугла.

Включение показа ошибок php через configuration.php

Если нет доступа к админке, или она не работает, то показ ошибок можно включить через файл configuration.php, который находиться в корневой папке вашего сайта.

В нём есть директива

public $error_reporting = "default";

Чтобы включить показ ошибок, измените значение default на maximum

Как включить показ ошибок через.htaccess

Если у вас не Joomla, а свой скрипт или по каким то причинам не получается включить сообщения об ошибках первыми двумя способами, то это можно сделать через файл.htaccess, который также находится в корневой папке вашего сайта.

Открываем.htaccess - обратите внимание точка впереди. Если у вас нет такого файла, то создайте его.
В CMS системах он обычно называется htaccess.txt и его достаточно просто переименовать в.htaccess

В самом верху добавляем строчку:

php_flag display_errors on

А строчка:

php_flag display_errors off

выключает показ ошибок.

Какие сообщения об ошибках php бывают?

Самые частые это:

Notice - уведомление о незначительных ошибках в коде. Обычно работоспособность сайта при этом сохраняется.

Просто в шапке выходят такие вот уведомления.

Warning - предупреждение о более серьёзных ошибках. Иногда при таком предупреждении работоспособность сайта также сохраняется, иногда белый экран.