/*
4) Here you can locate the log_errors and tick on the box next to it to enable it or un-tick the box to disable it.
5) If the change was successful, you will see a green box with a message which will confirm that the change has been applied.
That’s all! Now you know how to enable or disable PHP error logging in cPanel
For further questions, or if you need help, please open a support ticket from your Client Area’s Dashboard.
Источник
Как полностью выключить вывод ошибок в PHP? У меня вопрос. Чтобы отключить вывод ошибок вообще (если заливаю сайт на прод.), то нужен тот же самый код, только везде значения — 0? Или хватит только одной строчки? Если одной, то какая из них?
Простой 6 комментариев
Вывод ошибок лучше не выключать. Для прод режима перенаправлять все ошибки на 404 страницу, ошибки писать в лог.
Konata Izumi, спасибо за совет. А как отловить ошибку? Чтобы написать ее в лог. Это ведь не исключение, где можно ведь код, например, обернуть в try и в catch писать лог.
В php5 можно по извращаться с register_shutdown_function
Konata Izumi, ну а почему бы не дополнить совет и не превратить его в полноценный ответ? Например, показать самый простой способ записать в лог ошибку.
ini_set('display_errors', 0); ini_set('display_startup_errors', 0); error_reporting(E_ALL);
sorry_i_noob, в документации пишут, что display_startup_errors можно явно не отключать, но что Вам даст экономия на одной строчке против того, что ошибка может показываться пользователю, если на хостинге в php.ini что-то поменяется? У меня такое было при деплое на прод, лучше добавить заранее
Вывод ошибок лучше не выключать. Так вы лишите себя зацепок в случае багов на проде. Для себя вывод подробностей ошибок перенаправляем в лог (файл/бд/другое хранилище).
Пользователю не нужно показывать подробности ошибок (стектрейс). Достаточно отобразить страницу с кратким описанием (понятным пользователю) ошибки, например «404 Не найдено то-то» или «500 Ошибка сервера».
Еще вариант — средиректить пользователя на главную страницу и флеш сообщением вывести краткое описание ошибки.
Я бы не рекомендовал затыкать вывод ошибок полностью, это bad practice. Пишу на PHP уже лет 10, и только недавно установил уровень E_ALL, исправление всех ошибок заняло где-то неделю, но сейчас я нарадоваться не могу, ибо ругается даже на отсутствие ключей в массиве (ибо в большинстве случаев если обращаются к какому-либо ключу, он должен быть в массиве, а его отсутствие — следствие какой-то проблемы). Об отсутствии какой-либо переменной я и вовсе не говорю. Для юзера достаточно просто подавить вывод ошибок (ибо сайт не будет работать только при E_FATAL и E_COMPILE, когда вообще не получается получить байткод), а для разрабов ошибки можно писать хоть в текстовый файл, используя собственный обработчик set_error_handler ().
Источник
Как включить вывод ошибок PHP Хостинг-провайдеры нередко отключают или блокируют вывод всех ошибок и предупреждений. Такие ограничения вводятся не просто так. Дело в том, что на рабочих серверах крайне не рекомендуется держать ошибки в открытом доступе. Информация о неисправностях может стать «наживкой» для злоумышленников.
При этом в процессе разработки сайтов и скриптов, очень важно отслеживать возникающие предупреждения. Знать о сбоях и неисправностях также важно и системным администраторам — это позволяет предотвратить проблемы на сайте или сервере.
Самый оптимальный вариант — не просто скрыть показ ошибок, но и настроить запись о них в логах. Это позволит отслеживать предупреждения и не подвергать сервер угрозе.
В статье мы расскажем, как включить и отключить через .htaccess вывод ошибок php, а также двумя другими способами — через скрипт PHP и через файл php.ini.
Обратите внимание: в некоторых случаях изменение настроек вывода возможно только через обращение в техническую поддержку хостинга.
Через .htaccess Перейдите в каталог сайта и откройте файл .htaccess.
Вариант 1 . Чтобы включить вывод, добавьте следующие строки:
php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on
Чтобы отключить ошибки PHP htaccess, введите команду:
php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off
Также выключить .htaccess display errors можно командой:
php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_value docref_root 0 php_value docref_ext 0
Через логи PHP Если вам нужно проверить или выключить ошибки только в определенных файлах, это можно сделать с помощью вызова PHP-функций.
Вариант 1 . Чтобы включить вывод, используйте команду error_reporting. В зависимости от типа ошибок, которые вы хотите увидеть, подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
А для всех типов, исключая тип Notice, так:
error_reporting(E_ALL & ~E_NOTICE)
Чтобы отключить вывод, введите команду:
Чтобы отключить логирование повторяющихся ошибок, введите:
# disable repeated error logging php_flag ignore_repeated_errors on php_flag ignore_repeated_source on
Вариант 2 . Чтобы проверить конкретный кусок кода, подойдет команда ниже. В зависимости от типа ошибок, которые вы хотите увидеть, в скобках подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
ini_set('display_errors', 'On') error_reporting(E_ALL)
После этого в консоли введите:
ini_set('display_errors', 'Off')
Вариант 3 . Ещё один из вариантов подключения через скрипт:
php_flag display_startup_errors on php_flag display_errors on
php_flag display_startup_errors off php_flag display_errors off
Вариант 4 . Чтобы настроить вывод с логированием через конфигурацию веб-сервера, введите:
для Apache — ErrorLog «/var/log/apache2/my-website-error.log» , для Nginx — error_log /var/log/nginx/my-website-error.log . Подробнее о других аргументах читайте в документации на официальном сайте php.net.
Через файл php.ini Настроить отслеживание также можно через файл php.ini. Этот вариант подойдет, когда отображение или скрытие ошибок нужно настроить для всего сайта или кода. Обратите внимание : возможность настройки через файл php.ini есть не у всех, поскольку некоторые хостинг-провайдеры частично или полностью закрывают доступ к файлу.
Вариант 1 . Если у вас есть доступ, включить вывод можно командой:
После этого нужно перезагрузить сервер:
sudo apachectl -k graceful
Вариант 2 . Чтобы включить вывод, используйте команду error_reporting. В зависимости от типа ошибок, которые вы хотите увидеть, после знака = подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
error_reporting = E_ALL display_errors On
После ввода перезагрузите сервер:
sudo apachectl -k graceful
Чтобы скрыть отображение, во второй строке команды укажите Оff вместо On:
Теперь вы знаете, как настроить не только через PHP и php.ini, но и через htaccess отображение ошибок.
Источник
How to enable and disable PHP error logging using an .htaccess file This article describes how to configure PHP error logging by using the log_errors and error_log directives in an .htaccess file.
The information in this article only applies to certain types of hosting accounts. To determine whether or not the information below applies to your account, please see this article.
This article assumes that you have already set up a custom .htaccess file. If you have not already set up a custom .htaccess file, please read this article first.
Enabling error logging You can use the log_errors and error_log directives to configure PHP error logging. To do this, follow these steps:
Log in to your account using SSH. Use a text editor to add the following lines to the .htaccess file. Replace path with the path to the log file, and replace filename with the log filename: php_flag log_errors On php_value error_log /path /filename Disabling error logging To disable error logging, modify the log_errors line in the .htaccess file as follows:
To view a complete list of PHP directives, please visit https://secure.php.net/manual/en/ini.list.php. For more information about the log_errors directive, please visit https://secure.php.net/manual/en/errorfunc.configuration.php#ini.log-errors. For more information about the error_log directive, please visit https://secure.php.net/manual/en/errorfunc.configuration.php#ini.error-log. Article Details Источник
How to enable and disable PHP error logging using an .htaccess file This article describes how to configure PHP error logging by using the log_errors and error_log directives in an .htaccess file.
The information in this article only applies to certain types of hosting accounts. To determine whether or not the information below applies to your account, please see this article.
This article assumes that you have already set up a custom .htaccess file. If you have not already set up a custom .htaccess file, please read this article first.
Enabling error logging You can use the log_errors and error_log directives to configure PHP error logging. To do this, follow these steps:
Log in to your account using SSH. Use a text editor to add the following lines to the .htaccess file. Replace path with the path to the log file, and replace filename with the log filename: php_flag log_errors On php_value error_log /path /filename Disabling error logging To disable error logging, modify the log_errors line in the .htaccess file as follows:
To view a complete list of PHP directives, please visit https://secure.php.net/manual/en/ini.list.php. For more information about the log_errors directive, please visit https://secure.php.net/manual/en/errorfunc.configuration.php#ini.log-errors. For more information about the error_log directive, please visit https://secure.php.net/manual/en/errorfunc.configuration.php#ini.error-log. Article Details Источник