Скрипт для вывода ошибок на PHP. Вывод всех типов ошибок. — PROG-TIME

Скрипт для вывода ошибок на PHP. Вывод всех типов ошибок.

21.06.2018
Содержание:

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

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

Скрипт для вывода ошибок

Вот так выглядит скрипт:

ini_set('display_errors', 1);
error_reporting(E_ALL);

ini_set — Устанавливает значение настройки конфигурации. Настройка будет хранить установленное значение пока выполняется скрипт. После завершения работы скрипта значение настройки вернется к исходному.

error_reporting — Задает, какие ошибки PHP попадут в отчет. Здесь в качестве параметра вы можете задать нужный тип ошибок из списка доступных. У меня стоит E_ALL, что означает вывод всех типов ошибок.

Если display_errors = on, то в случае ошибки браузер получит html c текстом ошибки и кодом 200.

Если же display_errors = off, то для фатальных ошибок код ответа будет 500 и результат не будет возвращён пользователю, для остальных ошибок – код будет работать неправильно, но никому об этом не расскажет.

Это не обязательно, но все же, хочу сказать как лучше всего реализовать работу данного скрипта. Я это делаю следующим образом: добавляю скрипт в главный файл сайта (чаще всего это index.php). Можно прописать туда код или подключить как сторонний файл. И после этого я прописываю в файл .htaccess код, который производит редирект каждого запроса к сайту через файл index.php. Из этого получается что index.php становится файлом конфигурации и в него по мимо этого можно добавить другие скрипты, которые будет срабатывать при каждой загрузке сайта.

Как это реализовать, вы можете посмотреть в этой записи — http://prog-time.ru/perenapravlenie-vseh-zaprosov-cherez-fajl-index/

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

Теперь давайте поговорим о типах ошибок.

Типы ошибок в PHP

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

Вам достаточно просто записать название и что оно обозначает.

Все ошибки можно разделить на 2 группы. Фатальные и не фатальные. Фатальные, как правило ведут к полному сбою программы. Не фатальные же могут быть не заметными и на первый взгляд не причинять особого вреда.

Фатальные ошибки

Начнем мы с первой группы. Эти ошибки останавливают работу кода или совсем не дают ему запуститься.

E_PARSE

Самая популярная ошибка у начинающих разработчиков. Эта ошибка появляется, когда вы допускаете грубую нарушение синтаксиса и интерпретатор PHP не понимает, что вы от него хотите.

Вот в чем может быть ошибка:

  • Не закрыта или имеется лишняя скобка
  • В конце строки не стоит точка с запятой
  • Специальные знаки стоят в неположенном месте

E_ERROR

Это ошибка появляется, когда PHP понял что вы хотите, но сделать сие не получилось ввиду ряда причин, так же прерывает выполнение скрипта, при этом код до появления ошибки сработает.

Вот в чем может быть ошибка:

  • не найден файл, неправильно указан путь к файлу.
  • попытка вызвать несуществующий метод класса
  • Отсутствия свободной памяти (больше, чем прописано в директиве memory_limit) или ещё чего-нить подобного
  • Рекурсивный вызов функции. В данном примере он закончился на 256-ой итерации, ибо так прописано в настройках xdebug

Это все что касается фатальных ошибок. Теперь поговорим о не фатальных ошибка. Это самые противные ошибки, так как с ними больше всего хлопот из-за трудности их поимки и исправление.

Не фатальные ошибки

Как я и говорил, если не указать вывод всех ошибок, есть вероятности что будут такие, которые не выводятся. При этом будет нарушена работа программы и вы этого можете не заметить.

E_WARNING

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

E_NOTICE

Это самые распространенные ошибки, мало того, есть любители отключать вывод ошибок и клепают их целыми днями. Возникают при целом ряде тривиальных ошибок.

Сюда входят следующие ошибки:

  • Обращение в неопределенной переменной
  • Обращение к несуществующему элименту
  • Обращение  к несуществующей константе
  • Конвертация типов данных.

E_STRICT

Это ошибки, которые научат вас писать код правильно, чтобы не было стыдно, тем более IDE вам эти ошибки сразу показывают. Вот например, если вызвали не статический метод как статику, то код будет работать, но это как-то неправильно, и возможно появление серьёзных ошибок, если в дальнейшем метод класса будет изменён, и появится обращение к $this.

E_DEPRECATED

Так PHP будет ругаться, если вы используете устаревшие функции (т.е. те, что помечены как deprecated, и в следующем мажорном релизе их не будет).

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

При работе с серьезными проектам, обязательно тщательно проверять на ошибки работу программ.

В дальнейшем, возможно, я выпущу более подробную запись об ошибках. В данной же записи я хотел ваш показать скрипт вывода всех ошибок.

На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime
Наши планы
  • Написание материала для курса по разработке ботов на Telegram
  • Разработка универсального парсера на PHP

Поддержите мой сайт!

Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube

Контакты для связи

Технология на prog-time
Telegram
https://t.me/prog_time_bot