Этот вопрос задавался ранее более общим образом. Я хочу отображать сообщения об ошибках на определенной странице на моем рабочем сервере, и у меня нет доступа к файлу 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-адрес, браузер, версия приложения и т. Д.) В постоянное хранилище.