Php show error and warning

Как настроить отображение ошибок в 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, находится в официальной документации .

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

Читайте также:  Html красивый шаблон формы

Отображение ошибок 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

Источник

What is the Quickest Way to Show All PHP Errors

What is the Quickest Way to Show All PHP Errors

A PHP application may produce many different levels of errors and warnings when executed. Viewing these errors is critical for developers to troubleshoot an application. However, difficulties are often encountered when trying to display errors from PHP applications, which often fail silently.

Quickest Way to Show All PHP Errors

Adding the following lines to your PHP code is the quickest way to show all PHP errors and warnings:

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

The above functions are directives work as follows:

ini_set()

The ini_set function tries to override the configuration found in the PHP .ini file.

display_errors

The display_errors is a directive that determines whether the errors will be shown to the user or remain hidden. This should usually be disabled after development.

display_startup_errors

The display_startup_errors is also a directive, which is used to find the errors encountered during the PHP startup sequence. This is a separate directive because the display_errors directive does not handle such errors.

Unfortunately, the display_errors and display_startup_errors directives do not show parse errors such as missing semicolons or curly braces. The PHP ini configuration must be modified to achieve this.

error_reporting()

The error_reporting is a native PHP function that is used to show errors. This function can be used to report all types of errors in the PHP script. For that, the named constant E_ALL is used as the argument in the function.

Configure PHP.ini to Display All Errors and Warnings

If adding the above functions and directives does not show all errors, the PHP ini configuration has additional directives that can be modified:

The display_errors directive can be set to » on » in the PHP.ini file. This will display all errors including syntax and parse errors that are not displayed by only calling the ini_set function in the PHP code.

Note that the display_errors directive must be set to » off » if the application is in production.

The PHP.ini file can be found in the output of the phpinfo() function:

Loaded Configuration File shows the location of the PHP.ini file.

The PHP error_reporting() function

The error reporting function is a built-in function in PHP that allows developers to specify which and how many errors are shown in the application. This function sets the error_reporting directive in the PHP ini configuration during runtime.

The value 0 should be passed to the error_reporting function to remove all errors, warnings, parse messages and notices.

Variables are allowed to be used in PHP even if they are not declared. This is not best practice as undeclared variables cause issues if used in loops and conditions. Undeclared variables are displayed in the web application when E_NOTICE is passed in the error_reporting function.

The error_reporting function allows developers to filter which PHP errors can be shown. The “~” character stands for «not» or «no», so the parameter ~E_NOTICE means not to show notices. The «&» character means «true for all».

error_reporting(E_ALL); error_reporting(-1); ini_set('error_reporting', E_ALL); 

These 3 lines of code do the same thing — they show all PHP errors. The error_reporting(E_ALL) is the most widely used since it is more readable.

Show PHP Errors Through .htaccess Configuration

Directory files are usually accessible to developers. The .htaccess file located in the root or public directory of the project can also be used to enable or disable the directive for showing PHP errors.

php_flag display_startup_errors on php_flag display_errors on 

The .htaccess file has directives for display_startup_errors and display_errors , similar to what will be added to the PHP code to show errors. Development and production can have different .htaccess files by showing or disabling error messages this way, with production suppressing the displaying of errors.

The display_errors directive in .htaccess or the PHP.ini file may need to be configured depending on which files are accessible and how deployments and server configurations are done. Many hosting providers will not allow changes to the PHP.ini file to enable display_errors .

Track, Analyze and Manage PHP Errors With Rollbar

Rollbar in action

Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing and showing PHP errors easier than ever. Try it today

«Rollbar allows us to go from alerting to impact analysis and resolution in a matter of minutes. Without it we would be flying blind.»

Источник

Оцените статью