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

Обработка ошибок в PHP

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

Значит, наша с Вами задача получать каким-то образом уведомления о возникающих проблемах. Давайте разберём такой простой код:

<?php
  /* Функция по обработке ошибок */
  function handlerErrors($code, $msg, $file, $line) {
    mail("admin@mysite.ru", "Произошла ошибка", "$msg ($code) в файле $file (строка $line)"); // Отправляем e-mail администратору о возникновении ошибки
    /* Здесь можно сделать редирект на страницу с информацией о том, "что ошибка получена, и скоро она будет исправлена" (так поступает множество серьёзных сервисов, по типу mail.ru и прочих) */
  }
  set_error_handler(handlerErrors); // Устанавливаем наш обработчик ошибок
  $mysqli = new mysqli("localhost", "root", "", "mydb"); // Пытаемся подключиться к базе данных
  if (!$mysqli) {
    /* Если подключение не удалось, то вызываем ошибку */
    trigger_error("No connect");
  }
?>

В результате, Вы можете получить на свой e-mail, например, следующее: "mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (28000/1045): Access denied for user 'root'@'localhost' (using password: YES) (2) в файле Z:\home\test.local\www\index.php (строка 8)".

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

А на этапе создания сайта Вам нужно как можно больше найти "опасных" мест, где могут возникнуть ошибки и поставить там проверку и вызов trigger_error() в случае её возникновения.