Как вывести ошибки PHP на экран
Ошибки в скрипте PHP – обычное дело не только для новичков, но и для профессионалов. Разберемся, как узнать, что наш код работает неправильно, и исправить его.
Какие бывают ошибки
Их можно разделить на 2 типа: фатальные и не фатальные. Первый вид подразумевает, что проблема настолько серьезная, что после ее возникновения скрипт перестает выполняться, а второй вид может вызывать недоразумения в дальнейшем выполнении кода и способствовать возникновению новых сбоев.
Например, фатальной ошибкой будет считаться появление на экране надписи E_ERROR, которая может означать, допустим, неправильное распределение памяти. А возникновение E_NOTICE никак не повлияет на выполнение, но предупредит разработчика, что его код долго загружается. Эта проблема может возникнуть при неправильной очередности кода или подключении больших сторонних файлов.
Полный список констант и их значения можно посмотреть в официальной документации php в разделе предопределенные константы. Их можно использовать в функциях для вывода конкретных видов ошибок.
Включение отображения ошибок в самом скрипте
Самым простым способом, доступным даже новичку, является написание в начале скрипта строки:
error_reporting (‘E_ALL’);
Она пишется до выполнения основного кода и в случае возникновения каких-либо сбоев выведет их значения на экран. Вместо E_ALL можно писать любые интересующие константы.
В файле .htaccess
Этот вариант работает только на серверах Apache. Файл .htaccess является обычным текстовым документом, который нужен для простой настройки сервера и указания, например, что будет происходить, если пользователь перейдет на страницу с ошибкой. Их вывод настраивается прописыванием в файле строки:
php_flag display_errors On;
Чтобы указать конкретный тип ошибок, который нужно отобразить, пишем:
php_value error_reporting “E_ALL”;
В файле php.ini
Этот параметр имеет наибольший приоритет выполнения, следом за ним идет информация из .htaccess и только после этого сам код. Он распространяется на все сайты, находящиеся на сервере, поэтому его чаще используют администраторы.
В php.ini вначале прописывается функция вывода, а после нее:
display_errors On;
Чтобы изменение вступило в силу, не забудьте перезагрузить сервер.
Как исправить код
Чтобы устранить все проблемы, которые вызывают ошибки, код нужно тщательно проверить. Для этого можно в файле php включить попеременный вывод. Перед каждым отдельным блоком кода php пишут:
ini_set (‘display_errors’, ‘On’);
После этого включают отображение всех или некоторых типов ошибок:
error_reporting (‘E_ALL’);
Когда проверяемый блок кода окончен, нужно еще раз написать функцию ini_set, но со значением Off.
Не используйте оператор @ перед выражениями. Он подавляет сбои, не выводя их на экран, но проблема от этого не исчезает и может вызвать неполадки скрипта в последующих его частях.
Как отключить отображение для пользователя
Если в ходе выполнения кода возникают ошибки, их нужно видеть только разработчикам. Пока сайт находится в процессе разработки, отображение констант ошибок на странице допустимо, но обычному пользователю их видеть не нужно.
Для сбора всех логов сайта создают специальный файл PHP_errors.log в корневой папке, а в скрипте пишут функцию:
php_value error_log ../PHP_errors.log
При этом все ранее прописанные в коде параметры отображения ошибок меняют с On на Off.