Сервер производства PHP – включить сообщения об ошибках

Этот вопрос задавался ранее более общим образом. Я хочу отображать сообщения об ошибках на определенной странице на моем рабочем сервере, и у меня нет доступа к файлу php.ini . Каков наилучший способ включения всех ошибок и предупреждений на определенной странице PHP на вашем производственном сервере?

Я попробовал ERROR_REPORTING(E_ALL); ,

Чтобы включить ошибки, вы должны использовать error_reporting до того момента, когда они запускаются (например, в начале вашего PHP-скрипта) :

 error_reporting(E_ALL); 

И чтобы отобразить ошибку, вы должны настроить display_errors :

 ini_set('display_errors', 'On'); 

(Этот должен быть отключен на рабочем сервере, что означает, что вам придется включить его таким образом, даже после настройки error_reporting )

Конечно, все это может быть инкапсулировано в блок if , чтобы убедиться, что вы можете видеть сообщения об ошибках, особенно если вы делаете это на реальном веб-сайте; например :

 if ($_SESSION['is_admin']) { error_reporting(E_ALL); ini_set('display_errors', 'On'); } 

И чтобы получить что-то немного красивее, вы также можете настроить html_errors :

 ini_set('html_errors', 'On'); 

вы действительно не должны отображать их на производственном сервере. Лучший способ – создать некоторую систему регистрации.

Имейте в виду, чтобы сделать его многоразовым!

Совсем другой метод заключается в регистрации обработчика ошибок с помощью: set_error_handler

Таким образом, вы можете выбрать, что делать с ошибками: отправить их администратору, отобразить дружественное сообщение об ошибке, войти в файл / db, …

Еще одна вещь, которую следует отметить, это то, что вы, вероятно, не только хотите отображать ошибки, но хотите их записать в файл / базу данных. Просто показывать ошибки для ваших пользователей в производственной среде недостаточно; попросив их сообщить о проблемах, приведет к тому, что вы не знаете, что не так с вашим сервером, пока не стало слишком поздно. В своей базовой ошибке и обработчике исключений убедитесь, что у вас есть логика, которая записывает проблему (как можно больше информации об отладке – трассировка стека, пользовательский IP-адрес, браузер, версия приложения и т. Д.) В постоянное хранилище.