- Как в PHP 8 показать все ошибки
- Где настраивается вывод ошибок в PHP
- Настройка вывода ошибок в PHP скрипте
- Настройка вывода ошибок PHP в файле .htaccess
- Настройка вывода всех ошибок в файле php.ini
- Вывод ошибок в журнал веб-сервера
- Директива «error_reporting(‘all’);» и ошибка «Uncaught TypeError: error_reporting()»
- Php output all error
Как в 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 output all error
- Different ways to write a PHP code
- How to write comments in PHP ?
- Introduction to Codeignitor (PHP)
- How to echo HTML in PHP ?
- Error handling in PHP
- How to show All Errors in PHP ?
- How to Start and Stop a Timer in PHP ?
- How to create default function parameter in PHP?
- How to check if mod_rewrite is enabled in PHP ?
- Web Scraping in PHP Using Simple HTML DOM Parser
- How to pass form variables from one page to other page in PHP ?
- How to display logged in user information in PHP ?
- How to find out where a function is defined using PHP ?
- How to Get $_POST from multiple check-boxes ?
- How to Secure hash and salt for PHP passwords ?
- Program to Insert new item in array on any position in PHP
- PHP append one array to another
- How to delete an Element From an Array in PHP ?
- How to print all the values of an array in PHP ?
- How to perform Array Delete by Value Not Key in PHP ?
- Removing Array Element and Re-Indexing in PHP
- How to count all array elements in PHP ?
- How to insert an item at the beginning of an array in PHP ?
- PHP Check if two arrays contain same elements
- Merge two arrays keeping original keys in PHP
- PHP program to find the maximum and the minimum in array
- How to check a key exists in an array in PHP ?
- PHP | Second most frequent element in an array
- Sort array of objects by object fields in PHP
- PHP | Sort array of strings in natural and standard orders
- How to pass PHP Variables by reference ?
- How to format Phone Numbers in PHP ?
- How to use php serialize() and unserialize() Function
- Implementing callback in PHP
- PHP | Merging two or more arrays using array_merge()
- PHP program to print an arithmetic progression series using inbuilt functions
- How to prevent SQL Injection in PHP ?
- How to extract the user name from the email ID using PHP ?
- How to count rows in MySQL table in PHP ?
- How to parse a CSV File in PHP ?
- How to generate simple random password from a given string using PHP ?
- How to upload images in MySQL using PHP PDO ?
- How to check foreach Loop Key Value in PHP ?
- How to properly Format a Number With Leading Zeros in PHP ?
- How to get a File Extension in PHP ?
- How to get the current Date and Time in PHP ?
- PHP program to change date format
- How to convert DateTime to String using PHP ?
- How to get Time Difference in Minutes in PHP ?
- Return all dates between two dates in an array in PHP
- Sort an array of dates in PHP
- How to get the time of the last modification of the current page in PHP?
- How to convert a Date into Timestamp using PHP ?
- How to add 24 hours to a unix timestamp in php?
- Sort a multidimensional array by date element in PHP
- Convert timestamp to readable date/time in PHP
- PHP | Number of week days between two dates
- PHP | Converting string to Date and DateTime
- How to get last day of a month from date in PHP ?
- PHP | Change strings in an array to uppercase
- How to convert first character of all the words uppercase using PHP ?
- How to get the last character of a string in PHP ?
- How to convert uppercase string to lowercase using PHP ?
- How to extract Numbers From a String in PHP ?
- How to replace String in PHP ?
- How to Encrypt and Decrypt a PHP String ?
- How to display string values within a table using PHP ?
- How to write Multi-Line Strings in PHP ?
- How to check if a String Contains a Substring in PHP ?
- How to append a string in PHP ?
- How to remove white spaces only beginning/end of a string using PHP ?
- How to Remove Special Character from String in PHP ?
- How to create a string by joining the array elements using PHP ?
- How to prepend a string in PHP ?