Сервер производства 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-адрес, браузер, версия приложения и т.д.) В постоянное хранилище.