В стандартной версии движка пока перехватываются и обрабатываются только ошибки при обращении к базе данных. Ошибки PHP и предупреждения (в случае соответствующих настроек на сервере) не выводятся, а тихонько ложатся в лог веб-сервера. «Расширенная отладка» предоставляет несколько больше возможностей при обработке ошибок, которые будут полезны и разработчикам, и вебмастерам.
Перехват ошибок включается галкой «Перехватывать ошибки PHP» на вкладке «Ошибки PHP». «Отладка» будет пытаться перехватить и обработать всё, что возможно. А потом выведет максимум информации об ошибках в лог под страницей или уведомит администратора, если это разрешено.
• Выводит трассировку места возникновения ошибки заданной глубины.
• Опционально выводит в лог контекст ошибки.
• Есть возможность выводить стандартные сообщения об ошибках в случае, когда перехватить и обработать их «Отладкой» нет возможности.
• Может уведомлять админа о критических ошибках на e-mail, а также личным сообщением или уведомлением на сайте.
• При критических ошибках возвращает ответ сервера "Status: 500 Internal Server Error".
• При критических ошибках позволяет выдать на страницу пользователя «человеческое» сообщение, задаваемое в Админке, вместо стандартного пугающего «Ошибка 500 ...». Например: «На сайте произошла ошибка. Администраторы уже получили уведомление и работают над её устранением. Спасибо за понимание.».
На мой взгляд, лучше разобраться с подобными предупреждениями и устранить их. Чтобы в движке и компонентах не возникало неожиданных и трудноуловимых глюков. Поэтому в «Расширенной отладке» перехватываются все ошибки и предупреждения. Так что если после установки «Отладки» вы видите в логах сервера новые предупреждения, то нужно открыть страницы, где они возникают, а потом в логе под страницей посмотреть параметры предупреждений и отправить эту информацию разработчику соответствующего компонента.
Контекст выводится для любых ошибок и предупреждений, если возможно его получить от PHP. Эта информация однозначно будет нужна и полезна разработчикам для более точного определения причин ошибок и предупреждений. Но злоупотреблять им не стоит, в обычном режиме его вывод лучше отключить.
Для уведомления админа о критической ошибке в «Отладке» предусмотрены три возможности:
— на электронную почту, заданную в Админке;
— личным сообщением на сайте указанному в Админке пользователю;
— уведомлением на сайте этого пользователя.
В уведомлении по возможности будут включены: все параметры ошибки (номер, тип, описание, в какой строке какого файла возникла), адрес запрошенной страницы, параметры пользователя (id, ник, почта).
Ещё раз уточняю: Уведомления будут делаться только при критических ошибках. При обычных ошибках и предупреждениях уведомлений не будет.
А если поставить галку «При критической ошибке показывать пользователям следующее сообщение вместо ошибочной страницы» и вписать текст сообщения, то оно сохранится в настройках «Отладки» и будет показано пользователям вместо стандартного сообщения «500 Internal Server Error».
Админу в любом случае при критической ошибке на страницу будет выведена информация об ошибке, а также вся накопленная к этому времени информация отладки: статистика работы скрипта, все собранные логи с трассировками и разрешёнными опциями. Но, естественно, без цветового оформления, так как css-файл при таких ошибках не подключается. Это всё-таки гораздо лучше, чем стандартная короткая строка PHP про ошибку. Такая информация может понадобиться при отладке в особо трудных случаях, когда ошибки вроде быть не должно, а она происходит. Тогда можно перед строкой с ошибкой поставить точку отладки с выводом нужных переменных и посмотреть состояние скрипта. Выяснить причину ошибки будет намного легче.
Дополнительно к этому, ошибки при обращении к базе данных перехватываются «Расширенной отладкой» всегда и независимо от включения перехвата ошибок PHP. Все ошибки и предупреждения она пытается вывести в лог запросов к БД в значение «Результат» и в блок дополнительной информации после него. Естественно, это удаётся сделать только для «тихих» запросов. Для остальных работает стандартная обработка.
При возникновении ошибок или предупреждений при выполнении «тихих» запросов к БД, информация о количестве ошибок и предупреждений выводится красным шрифтом на жёлтом фоне в основной таблице отладки в блоке «SQL queries». Подсчёт ошибок производится независимо от разрешения вывода SQL-запросов в лог. Так что даже если лог запросов отключён, вы всё равно увидите наличие ошибочных запросов в основной таблице. Чтобы посмотреть запросы, нужно включить вывод запросов в лог галкой «Показывать коннекты и запросы к БД». У проблемных запросов информация об ошибках также будет выделена красным шрифтом на жёлтом фоне. Стили оформления ошибок и предупреждений настраиваются в css-файле «Отладки».
Таким образом, «Расширенная отладка» дополняет стандартный перехват ошибок БД и будет полезна разработчикам, позволяя увидеть скрытые нюансы.
Перехват ошибок включается галкой «Перехватывать ошибки PHP» на вкладке «Ошибки PHP». «Отладка» будет пытаться перехватить и обработать всё, что возможно. А потом выведет максимум информации об ошибках в лог под страницей или уведомит администратора, если это разрешено.
Основные возможности
• Перехватывает всё, от предупреждений до критических ошибок.• Выводит трассировку места возникновения ошибки заданной глубины.
• Опционально выводит в лог контекст ошибки.
• Есть возможность выводить стандартные сообщения об ошибках в случае, когда перехватить и обработать их «Отладкой» нет возможности.
• Может уведомлять админа о критических ошибках на e-mail, а также личным сообщением или уведомлением на сайте.
• При критических ошибках возвращает ответ сервера "Status: 500 Internal Server Error".
• При критических ошибках позволяет выдать на страницу пользователя «человеческое» сообщение, задаваемое в Админке, вместо стандартного пугающего «Ошибка 500 ...». Например: «На сайте произошла ошибка. Администраторы уже получили уведомление и работают над её устранением. Спасибо за понимание.».
Уровень перехвата ошибок PHP
Какие именно ошибки и/или предупреждения будут фиксироваться сервером в стандартной версии CMS зависит от настроек сервера. Это достаточно оправданный поход, дающий вебмастеру возможность управлять перехватом ошибок через настройки сервера. Например, если какой-то компонент написан не совсем корректно и пишет в лог веб-сервера много предупреждений, можно понизить уровень перехвата и эти предупреждения не будут засорять лог.На мой взгляд, лучше разобраться с подобными предупреждениями и устранить их. Чтобы в движке и компонентах не возникало неожиданных и трудноуловимых глюков. Поэтому в «Расширенной отладке» перехватываются все ошибки и предупреждения. Так что если после установки «Отладки» вы видите в логах сервера новые предупреждения, то нужно открыть страницы, где они возникают, а потом в логе под страницей посмотреть параметры предупреждений и отправить эту информацию разработчику соответствующего компонента.
Контекст ошибок
При необходимости можно вывести в лог контекст ошибки галкой «Выводить в лог на экран контекстные данные ошибок». Контекст — это большой объём информации, включающий в себя все определённые на данный момент переменные и массивы, в том числе и серверные, а также все созданные объекты. Поэтому включать вывод контекстных данных ошибок можно только на локальном сервере или при включенной галке «Показывать отладочную информацию только администраторам» на сервере.Контекст выводится для любых ошибок и предупреждений, если возможно его получить от PHP. Эта информация однозначно будет нужна и полезна разработчикам для более точного определения причин ошибок и предупреждений. Но злоупотреблять им не стоит, в обычном режиме его вывод лучше отключить.
Стандартный вывод ошибок
Иногда полезно оставить и стандартный вывод ошибок. Это может помочь в том случае, если по какой-то причине перехват ошибок «Отладкой» не произошёл. Для его включения есть галка «Разрешить стандартный вывод ошибок на экран». Сообщения выводятся стандартным шрифтом обычно в верху страницы или в месте возникновения внутри страницы. Эта опция может быть полезна при появлении «белых экранов». В обычном режиме работы эту галку можно выключить, так как все ошибки и предупреждения будут выведены в лог.Критические ошибки
При критических ошибках, то есть таких, когда страница вообще не может быть создана, сервером в браузер обычно возвращается ошибка «500 Internal Server Error» («внутренняя ошибка сервера»). Во-первых, это серьёзные ошибки, которые на отлаженном сайте вообще происходить не должны. Но если всё же такое случилось, то хотелось бы об этом узнать. Во-вторых, сообщение «Ошибка 500 …» никак не успокаивает пользователей сайта.Для уведомления админа о критической ошибке в «Отладке» предусмотрены три возможности:
— на электронную почту, заданную в Админке;
— личным сообщением на сайте указанному в Админке пользователю;
— уведомлением на сайте этого пользователя.
В уведомлении по возможности будут включены: все параметры ошибки (номер, тип, описание, в какой строке какого файла возникла), адрес запрошенной страницы, параметры пользователя (id, ник, почта).
Ещё раз уточняю: Уведомления будут делаться только при критических ошибках. При обычных ошибках и предупреждениях уведомлений не будет.
А если поставить галку «При критической ошибке показывать пользователям следующее сообщение вместо ошибочной страницы» и вписать текст сообщения, то оно сохранится в настройках «Отладки» и будет показано пользователям вместо стандартного сообщения «500 Internal Server Error».
Админу в любом случае при критической ошибке на страницу будет выведена информация об ошибке, а также вся накопленная к этому времени информация отладки: статистика работы скрипта, все собранные логи с трассировками и разрешёнными опциями. Но, естественно, без цветового оформления, так как css-файл при таких ошибках не подключается. Это всё-таки гораздо лучше, чем стандартная короткая строка PHP про ошибку. Такая информация может понадобиться при отладке в особо трудных случаях, когда ошибки вроде быть не должно, а она происходит. Тогда можно перед строкой с ошибкой поставить точку отладки с выводом нужных переменных и посмотреть состояние скрипта. Выяснить причину ошибки будет намного легче.
Ошибки базы данных
В стандартной версии движка есть встроенная обработка ошибок при запросах к БД. Причём довольно жёсткая – происходит остановка скрипта и вывод информации об ошибке на чистой странице для всех запросов, кроме помеченных разработчиками как «тихие» (в функцию query() передаётся параметр $quiet=true).Дополнительно к этому, ошибки при обращении к базе данных перехватываются «Расширенной отладкой» всегда и независимо от включения перехвата ошибок PHP. Все ошибки и предупреждения она пытается вывести в лог запросов к БД в значение «Результат» и в блок дополнительной информации после него. Естественно, это удаётся сделать только для «тихих» запросов. Для остальных работает стандартная обработка.
При возникновении ошибок или предупреждений при выполнении «тихих» запросов к БД, информация о количестве ошибок и предупреждений выводится красным шрифтом на жёлтом фоне в основной таблице отладки в блоке «SQL queries». Подсчёт ошибок производится независимо от разрешения вывода SQL-запросов в лог. Так что даже если лог запросов отключён, вы всё равно увидите наличие ошибочных запросов в основной таблице. Чтобы посмотреть запросы, нужно включить вывод запросов в лог галкой «Показывать коннекты и запросы к БД». У проблемных запросов информация об ошибках также будет выделена красным шрифтом на жёлтом фоне. Стили оформления ошибок и предупреждений настраиваются в css-файле «Отладки».
Таким образом, «Расширенная отладка» дополняет стандартный перехват ошибок БД и будет полезна разработчикам, позволяя увидеть скрытые нюансы.
Реклама #
Alexprofi 8 лет назад #
WebMan 8 лет назад #