Вывод ошибок php в консоли

Как включить вывод ошибок 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 отображение ошибок.

Источник

Как в PHP 8 показать все ошибки

По умолчанию в PHP 8 отключён показ ошибок, поэтому если во время выполнения PHP скрипта возникла проблема, то на экран ничего не будет выведено. Если ошибка в программе произошла до вывода HTML кода, то вы увидите белый экран веб-браузера.

Где настраивается вывод ошибок в PHP

Вывод ошибок настраивается в:

  • коде скрипта
  • .htaccess файле
  • в конфигурационном файле PHP (например, в php.ini)

Настройке в коде скрипта влияют на поведение только программы, в которую внесены настройки.

Настройки в файле .htaccess влияют на все скрипты, находящиеся в данной директории и поддиректориях.

Настройки в конфигурационном файле php.ini влияют на все запускаемые PHP скрипты, если в них не переназначены настройки вывода ошибок.

Помните, что вывод ошибок очень полезен во время написания и отладки кода, но на рабочих серверах вывод ошибок должен быть отключён, чтобы предотвратить утечку чувствительных данных и затруднить атакующему взлом сайта.

Настройка вывода ошибок в PHP скрипте

Для вывода всех ошибок, добавьте в начало скрипта следующие строки:

ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

Данные настройки включают вывод всех ошибок и предупреждений в веб-браузер пользователя.

Будут выведены предупреждения об использовании устаревших конструкций.

Настройка вывода ошибок в журналы веб-сервера выполняется отдельно.

Помните, что при возникновении фатальных ошибок, то есть когда скрипт даже не смог запуститься из-за неправильного синтаксиса PHP, то для вывода ошибок будут применяться правила, указанные в файле php.ini или .htaccess. Это обусловлено тем, что при неправильном синтаксисе интерпретатор PHP не понимает весь файл, в том числе и указанные выше директивы. То есть если в коде пропущена точка с запятой или фигурная скобка, то ошибки будут выводиться в соответствии с настройками в файле php.ini.

Настройка вывода ошибок PHP в файле .htaccess

Включение вывода ошибок в файле .htaccess выполняется следующими директивами:

php_flag display_startup_errors on php_flag display_errors on

Чтобы они сработали, необходимо, чтобы на веб-сервере была включена поддержка файлов .htaccess.

Вывод ошибок в журнал веб-сервера выполняется следующей директивой:

php_value error_log logs/all_errors.log

Настройка вывода всех ошибок в файле php.ini

Файл php.ini — это конфигурационный файл PHP.

При своей работе PHP может использовать более одного конфигурационного файла.

Расположение файла php.ini:

  • В Debian и производных дистрибутивах (Ubuntu, Linux Mint, Kali Linux и прочих) зависит от версии PHP, например, для PHP 8.1 путь до файла следующий: /etc/php/8.1/apache2/php.ini
  • В Arch Linux и производных дистрибутивах (Manjaro, BlackArch и прочих): /etc/php/php.ini

В файле php.ini вы найдёте следующие директивы:

display_errors = Off display_startup_errors = Off

Для включения вывода ошибок замените их на:

display_errors = On display_startup_errors = On

По умолчанию значение error_reporting установлено на:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Это означает, что выводятся все ошибки, кроме предупреждений об устаревших конструкциях и предупреждения, вызванные строгой проверкой кода.

Чтобы выводить все ошибки и предупреждения, установите следующее значение:

  • E_ALL (Показать все ошибки, предупреждения и уведомления, включая стандарты написания кода.)
  • E_ALL & ~E_NOTICE (Показать все ошибки, кроме уведомлений)
  • E_ALL & ~E_NOTICE & ~E_STRICT (Показать все ошибки, кроме уведомлений и предупреждений о стандартах написания кода.)
  • E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Показать только ошибки)

Для того, чтобы изменения, сделанные в файле php.ini, вступили в силу, необходима перезагрузка веб-сервера.

  • В Debian и производных дистрибутивах (Ubuntu, Linux Mint, Kali Linux и прочих) это делается командой:
sudo systemctl restart apache2.service
sudo systemctl restart httpd.service

Чтобы проверить, что настройки файла php.ini действительно применяются, создайте файл, например, с именем info.php и скопируйте в него:

Если вы создали файл в корневой папке веб-сервера, то в веб-браузере откройте адрес http://localhost/info.php.

На следующем скриншоте показано, что вывод ошибок отключён в файле php.ini:

На этом скриншоте видно, что вывод ошибок включён в файле php.ini:

Вывод ошибок в журнал веб-сервера

Настройка вывода ошибок в журнал веб-сервера настраивается в файле php.ini.

Для этого используется следующая директива:

Расположение файла с ошибка настраивается в конфигурации веб-сервера.

Директива «error_reporting(‘all’);» и ошибка «Uncaught TypeError: error_reporting()»

При попытке использовать следующую конструкцию:

Вы столкнётесь с ошибкой Uncaught TypeError: error_reporting().

[Wed Jul 06 07:29:19.410966 2022] [php:error] [pid 14101] [client 127.0.0.1:58402] PHP Fatal error: Uncaught TypeError: error_reporting(): Argument #1 ($error_level) must be of type ?int, string given in /srv/http/suip/index.php:3\nStack trace:\n#0 /srv/http/suip/index.php(3): error_reporting('all')\n#1 \n thrown in /srv/http/suip/index.php on line 3, referer: http://localhost/suip/

Вместо ‘all‘ вам нужно указать константу, выражающую уровень сообщения об ошибках. Допустимые значения провидены на этой страницы: https://www.php.net/manual/errorfunc.constants.php

Следующая запись является правильной для PHP 8 и означает показывать все ошибки, замечания и рекомендации:

Источник

Вывод ошибок в PHP

Ошибка

Нет кода без ошибок. Как говорят, на ошибках учатся. Ну, а мы сегодня научимся включать и отключать вывод ошибок в PHP.

Если вы видите белый экран, вместо какого-либо ожидаемого результата, значит скорее всего в вашем коде произошла ошибка. Посмотрите, если в ответе сервера пришёл статус ошибки, например 500, но при этом на экране ничего нет, то вам нужно включить вывод ошибок.

Включить ошибки в PHP

Включение ошибок и предупреждений в php-скрипте

Для того, чтобы включить ошибки прямо в скрипте, перед выполняемым кодом напишите следующее:

ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

После этого обновите страницу, сообщение об ошибке должно отобразиться. Вы также можете включить ошибки и предупреждения на уровне сервера.

Включение ошибок и предупреждений в файле .htaccess

Если у вас есть доступ к редактированию файла .htaccess, то пропишите в нём следующие строки:

php_value display_errors 1 php_value display_startup_errors 1 php_value error_reporting E_ALL

После этого перезапустите Apache.

Включение ошибок и предупреждений в файле php.ini

Конечно же, можно настроить отображение ошибок в конфигурационном файле PHP. Для этого, добавить в файл php.ini следующее:

error_reporting = E_ALL display_errors = On display_startup_errors = On

После этого перезапустите PHP.

Борис Заболотских

Автор блога Борис Заболотских

Здравствуй дорогой читатель! Я рад приветствовать тебя на страницах моего блога. Уже несколько лет я занимаюсь веб-программированием и рад поделиться с тобой своими знаниями и советами. Если тебе понравились мои статьи, ты можешь подписаться на рассылку блога, из неё ты узнаешь много интересного!

Источник

Читайте также:  Php curl get options
Оцените статью