Intereting Posts
Обновление PHP-версии вызвало проблемы с конструкторами классов Обновление php mysql IP-адреса не может работать правильно mysql_query (): как проверить, обновлены ли какие-либо строки в случае UPDATE SQL Как отправить электронную почту с помощью вложения pdf с помощью php? Как получить полезные сообщения об ошибках в PHP? Запись массива в файл в php И получение данных Файлы Bootstrap не загружаются должным образом на других страницах codeigniter Обнаружение, если два окна браузера открыты для одного и того же сайта Угрозы безопасности с загрузками SimpleXML / PHP – Не удается получить доступ к объекту CodeIgniter – вызов функции-члена select () для не-объекта Symfony2 twig code не работает в шаблоне xml, поскольку он работает в html Загрузка XML с помощью SimpleXML не возвращает атрибуты для некоторых элементов Мгновенное уведомление с использованием php / mysql, пожалуйста, дайте мне общую идею Сервер Xampp PHP GET работает Fine POST не работает

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