Сервер производства PHP - включить сообщения об ошибках
Этот вопрос задан ранее более общим способом. Я хочу отображать сообщения об ошибках на определенной странице на моем рабочем сервере, и у меня нет доступа к файлу php.ini
. Каков наилучший способ включения всех ошибок и предупреждений на определенной странице PHP на вашем рабочем сервере?
Я пробовал ERROR_REPORTING(E_ALL);
.
Ответы
Ответ 1
Чтобы включить ошибки, вы должны использовать 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');
Ответ 2
вам действительно не нужно отображать их на рабочем сервере. Лучший способ - создать некоторую систему регистрации.
Имейте в виду, чтобы сделать его многоразовым!
Ответ 3
Совсем другой метод заключается в регистрации обработчика ошибок с помощью: set_error_handler
Таким образом, вы можете выбрать, что делать с ошибками: отправить их администратору, отобразить дружественное сообщение об ошибке, log to file/db,...
Ответ 4
Еще одно замечание: вы, вероятно, не только хотите отображать ошибки, но хотите их записать в файл/базу данных. Просто показывать ошибки для ваших пользователей в производственной среде недостаточно; попросив их сообщить о проблемах, приведет к тому, что вы не знаете, что не так с вашим сервером, пока не станет слишком поздно. В своей базовой ошибке и обработчике исключений убедитесь, что у вас есть логика, которая записывает проблему (как можно больше информации об отладке - трассировка стека, пользовательский IP-адрес, браузер, версия приложения и т.д.) В постоянное хранилище.