- Как настроить отображение ошибок в PHP
- Как быстро показать все ошибки PHP
- Что именно делают эти строки?
- Отображение ошибок PHP через настройки в php.ini
- Отображать ошибки PHP через настройки в .htaccess
- Включить подробные предупреждения и уведомления
- Более подробно о функции error_reporting ()
- Включить ошибки php в файл с помощью функции error_log ()
- Журнал ошибок PHP через конфигурацию веб-сервера
- Рекомендуемые статьи:
- PHP Error Reporting: How to Enable & Display All Errors / Warnings
- What is a PHP Error?
- How to Display all PHP Errors
- Edit php.ini to Enable PHP Error Reporting
- Edit .htaccess File to turn on Error Reporting
- Other Useful Commands
- How to Turn Off PHP Error Reporting
- How to Create an Error Log File in PHP
- How to Display PHP Errors on a Webpage
Как настроить отображение ошибок в PHP
В этом руководстве мы расскажем о различных способах того, как в PHP включить вывод ошибок. Мы также обсудим, как записывать ошибки в журнал (лог).
Как быстро показать все ошибки PHP
Самый быстрый способ отобразить все ошибки и предупреждения php — добавить эти строки в файл PHP:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
Что именно делают эти строки?
Функция ini_set попытается переопределить конфигурацию, найденную в вашем ini-файле PHP.
Display_errors и display_startup_errors — это только две из доступных директив. Директива display_errors определяет, будут ли ошибки отображаться для пользователя. Обычно директива dispay_errors не должна использоваться для “боевого” режима работы сайта, а должна использоваться только для разработки.
display_startup_errors — это отдельная директива, потому что display_errors не обрабатывает ошибки, которые будут встречаться во время запуска PHP. Список директив, которые могут быть переопределены функцией ini_set, находится в официальной документации .
К сожалению, эти две директивы не смогут отображать синтаксические ошибки, такие как пропущенные точки с запятой или отсутствующие фигурные скобки.
Отображение ошибок PHP через настройки в php.ini
Если ошибки в браузере по-прежнему не отображаются, то добавьте директиву:
Директиву display_errors следует добавить в ini-файл PHP. Она отобразит все ошибки, включая синтаксические ошибки, которые невозможно отобразить, просто вызвав функцию ini_set в коде PHP.
Актуальный INI-файл можно найти в выводе функции phpinfo (). Он помечен как “загруженный файл конфигурации” (“loaded configuration file”).
Отображать ошибки PHP через настройки в .htaccess
Включить или выключить отображение ошибок можно и с помощью файла .htaccess, расположенного в каталоге сайта.
php_flag display_startup_errors on php_flag display_errors on
.htaccess также имеет директивы для display_startup_errors и display_errors.
Вы можете настроить display_errors в .htaccess или в вашем файле PHP.ini. Однако многие хостинг-провайдеры не разрешают вам изменять ваш файл PHP.ini для включения display_errors.
В файле .htaccess также можно включить настраиваемый журнал ошибок, если папка журнала или файл журнала доступны для записи. Файл журнала может быть относительным путем к месту расположения .htaccess или абсолютным путем, например /var/www/html/website/public/logs .
php_value error_log logs/all_errors.log
Включить подробные предупреждения и уведомления
Иногда предупреждения приводят к некоторым фатальным ошибкам в определенных условиях. Скрыть ошибки, но отображать только предупреждающие (warning) сообщения можно вот так:
Для отображения предупреждений и уведомлений укажите «E_WARNING | E_NOTICE».
Также можно указать E_ERROR, E_WARNING, E_PARSE и E_NOTICE в качестве аргументов. Чтобы сообщить обо всех ошибках, кроме уведомлений, укажите «E_ALL & ~ E_NOTICE», где E_ALL обозначает все возможные параметры функции error_reporting.
Более подробно о функции error_reporting ()
Функция сообщения об ошибках — это встроенная функция PHP, которая позволяет разработчикам контролировать, какие ошибки будут отображаться. Помните, что в PHP ini есть директива error_reporting, которая будет задана этой функцией во время выполнения.
Для удаления всех ошибок, предупреждений, сообщений и уведомлений передайте в функцию error_reporting ноль. Можно сразу отключить сообщения отчетов в ini-файле PHP или в .htaccess:
PHP позволяет использовать переменные, даже если они не объявлены. Это не стандартная практика, поскольку необъявленные переменные будут вызывать проблемы для приложения, если они используются в циклах и условиях.
Иногда это также происходит потому, что объявленная переменная имеет другое написание, чем переменная, используемая для условий или циклов. Когда E_NOTICE передается в функцию error_reporting, эти необъявленные переменные будут отображаться.
Функция сообщения об ошибках позволяет вам фильтровать, какие ошибки могут отображаться. Символ «~» означает «нет», поэтому параметр ~ E_NOTICE означает не показывать уведомления. Обратите внимание на символы «&» и «|» между возможными параметрами. Символ «&» означает «верно для всех», в то время как символ «|» представляет любой из них, если он истинен. Эти два символа имеют одинаковое значение в условиях PHP OR и AND.
error_reporting(E_ALL); error_reporting(-1); ini_set('error_reporting', E_ALL);
Эти три строки кода делают одно и то же, они будут отображать все ошибки PHP. Error_reporting(E_ALL) наиболее широко используется разработчиками для отображения ошибок, потому что он более читабелен и понятен.
Включить ошибки php в файл с помощью функции error_log ()
У сайта на хостинге сообщения об ошибках не должны показываться конечным пользователям, но эта информация все равно должна быть записана в журнал (лог).
Простой способ использовать файлы журналов — использовать функцию error_log, которая принимает четыре параметра. Единственный обязательный параметр — это первый параметр, который содержит подробную информацию об ошибке или о том, что нужно регистрировать. Тип, назначение и заголовок являются необязательными параметрами.
error_log("There is something wrong!", 0);
Параметр type, если он не определен, будет по умолчанию равен 0, что означает, что эта информация журнала будет добавлена к любому файлу журнала, определенному на веб-сервере.
error_log("Email this error to someone!", 1, "someone@mydomain.com");
Параметр 1 отправит журнал ошибок на почтовый ящик, указанный в третьем параметре. Чтобы эта функция работала, PHP ini должен иметь правильную конфигурацию SMTP, чтобы иметь возможность отправлять электронные письма. Эти SMTP-директивы ini включают хост, тип шифрования, имя пользователя, пароль и порт. Этот вид отчетов рекомендуется использовать для самых критичных ошибок.
error_log("Write this error down to a file!", 3, "logs/my-errors.log");
Для записи сообщений в отдельный файл необходимо использовать тип 3. Третий параметр будет служить местоположением файла журнала и должен быть доступен для записи веб-сервером. Расположение файла журнала может быть относительным путем к тому, где этот код вызывается, или абсолютным путем.
Журнал ошибок PHP через конфигурацию веб-сервера
Лучший способ регистрировать ошибки — это определить их в файле конфигурации веб-сервера.
Однако в этом случае вам нужно попросить администратора сервера добавить следующие строки в конфигурацию.
ErrorLog "/var/log/apache2/my-website-error.log"
В nginx директива называется error_log.
error_log /var/log/nginx/my-website-error.log;
Теперь вы знаете, как в PHP включить отображение ошибок. Надеемся, что эта информация была вам полезна.
Рекомендуемые статьи:
- Как изменить версию PHP на сервере с Debian 10
- PhpMyAdmin — как создать пользователя и базу данных
- WordPress — как отключить управление сайтом через xmlrpc
- Несколько причин медленной работы сайта на примере WordPress
- WordPress — смена домена сайта при помощи wp-cli
- Когда использовать index.php, а когда index.html
- PHP. Как удалить элемент из массива
- Дата и время в PHP
- PHP. Различия между Fast-CGI, CGI, Mod-PHP, SuPHP, PHP-FPM
- Простой пример кода на языке PHP
- PHP. Проверка содержит ли строка определенное слово
- Как предотвратить SQL инъекции в PHP
- Как установить Linux, Apache, MySQL, PHP (LAMP) в Ubuntu 18.04
- Несколько трюков и секретов PHP
PHP Error Reporting: How to Enable & Display All Errors / Warnings
PHP is a server-side scripting language used in web development. As a scripting language, PHP is used to write code (or scripts) to perform tasks. If a script encounters an error, PHP can generate an error to a log file.
In this tutorial, learn how to enable PHP Error Reporting to display all warnings. We also dive into creating an error log file in PHP.
What is a PHP Error?
A PHP error occurs when there is an issue within the PHP code. Even something simple can cause an error, such as using incorrect syntax or forgetting a semicolon, which prompts a notice. Or, the cause may be more complex, such as calling an improper variable, which can lead to a fatal error that crashes your system.
How to Display all PHP Errors
If you do not see errors, you may need to enable error reporting.
To enable error reporting in PHP, edit your PHP code file, and add the following lines:
You can also use the ini_set command to enable error reporting:
Edit php.ini to Enable PHP Error Reporting
If you have set your PHP code to display errors and they are still not visible, you may need to make a change in your php.ini file.
On Linux distributions, the file is usually located in /etc/php.ini folder.
Open php.ini in a text editor.
Then, edit the display_errors line to On .
This is an example of the correction in a text editor:
Edit .htaccess File to turn on Error Reporting
The .htaccess file, which acts as a master configuration file, is usually found in the root or public directory. The dot at the beginning means it’s hidden. If you’re using a file manager, you’ll need to edit the settings to see the hidden files.
Open the .htaccess file for editing, and add the following:
php_flag display_startup_errors on php_flag display_errors on
If these values are already listed, make sure they’re set to on.
Other Useful Commands
To display only the fatal warning and parse errors, use the following:
You can add any other error types you need. Just separate them with the pipe | symbol.
This list contains all the predefined constants for PHP error types.
One useful feature is the “not” symbol.
To exclude a particular error type from reporting:
In this example, the output displays all errors except for notice errors.
How to Turn Off PHP Error Reporting
To turn off or disable error reporting in PHP, set the value to zero. For example, use the code snippet:
How to Create an Error Log File in PHP
Error logs are valuable resources when dealing with PHP issues.
To display PHP error logs, edit the .htaccess file by adding the following:
php_value error_log logs/all_errors.log
If you don’t have access to the .htaccess file, you can edit the httpd.conf or apache2.conf file directly.
This log is typically stored in the /var/log/httpd/ or /var/log/apache2/ directory.
To enable error logging, edit your version of the file and add the following:
ErrorLog “/var/log/apache2/website-name-error.log”
You may substitute httpd for apache2 if needed. Likewise, if you’re using nginx, you can use that directory for the error log.
How to Display PHP Errors on a Webpage
Error logs are valuable resources when dealing with PHP issues.
To display PHP error logs, edit the .htaccess file by adding the following:
php_value error_log logs/all_errors.log
If you don’t have access to the file, you can edit the httpd.conf or apache2.conf file directly.
This log is typically stored in the /var/log/httpd/ or /var/log/apache2/ directory.
To enable error logging, edit your version of the file and add the following:
ErrorLog “/var/log/apache2/website-name-error.log”
You may substitute httpd for apache2 if needed. Likewise, if you’re using nginx, you can use that directory for the error log.
This tutorial has provided you with multiple alternatives to enable and show all PHP errors and warnings. By receiving error notifications quickly and accurately, you can improve the ability to troubleshoot PHP issues. If you are implementing new features, installing a new PHP-based app, or trying to locate a bug on your website, it is important to know which PHP version your web server is running before taking any steps.