Php show errors config

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

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

Читайте также:  Как понизит пинг css

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

Posted on Jul 13, 2022

By default, PHP will try to keep all the warnings and errors from showing on your browser.

This is done so that your users won’t see the errors when using your application.

But to fix an issue found in your code, you may need to display the PHP errors and warnings so that you know what is wrong with your application.

This tutorial will help you to display PHP errors on the browser.

Enable error reporting on a PHP file

To display errors and warnings in your browser, you need to set the following directives at the top of your PHP code file:

 The ini_set() function is used to override the configuration in your php.ini file.

In the above example, the display_errors and display_startup_errors configuration is activated by setting their values to true or 1 .

Usually, these configurations are set to false to hide the errors and warnings in your PHP code execution.

Finally, the error_reporting() function determines the error level that will be generated.

  • E_ALL — show all errors and warnings
  • E_ERROR — show only fatal run-time errors
  • E_RECOVERABLE_ERROR — almost fatal run-time errors
  • E_WARNING — run-time warnings (non-fatal errors)
  • E_PARSE — compile-time parse errors
  • E_NOTICE — show run-time notices
  • E_STRICT — enable PHP to suggest best practice in your code
  • E_CORE_ERROR — fatal errors that occur during PHP’s initial startup
  • E_CORE_WARNING — warnings that occur during initial startup
  • E_COMPILE_ERROR — fatal compile-time errors
  • E_COMPILE_WARNING — compile-time warnings (non-fatal errors)
  • E_USER_ERROR — user-generated error message
  • E_USER_WARNING — user-generated warning message
  • E_USER_NOTICE — user-generated notice message
  • E_DEPRECATED — warn about features that will be dropped in future PHP versions
  • E_USER_DEPRECATED — user-generated deprecation warnings

But usually, only the E_ALL option is used for debugging your code.

With the three directives set, you should see errors and warnings in your code.

Suppose you have a PHP script as follows:


PHP showing errors

But keep in mind that setting the directives in the PHP file won’t work when you have a parse error.

Enable error reporting from PHP ini file

A parse error happens when your PHP script is wrong at the syntax level, such as missing semicolons in your code.

Suppose you miss a semicolon as shown below:

Then the page will fail to load on the browser and it will show an HTTP 500 error code:

PHP parse error HTTP 500

To make PHP show display parse errors, you need to change the configuration settings in the php.ini file.

If you don’t know where the php.ini configuration file is located, execute the following code from the terminal:

You should see the location of your php.ini file as shown below:

Next, open the php.ini file and set the display_errors , display_startup_errors , and error_reporting configs as shown below:
The configs above are exactly what you set using the ini_set() and error_reporting() functions.

By setting the configs from the .ini file, the parse errors won’t cause PHP to return the error 500 code.

Restart your PHP server, then run the same file again. This time, you should see a parse error message as follows:

PHP parse error message

That’s how you display all PHP errors and warnings using the PHP ini file.

Alternatively, you can also display PHP errors using the .htaccess configuration.

Display PHP error from the htaccess file

Sometimes, you may not be able to edit the php.ini file because of restrictions from your hosting provider.

In that case, you can try to add error logging configurations from the .htaccess file.

The .htaccess file is a configuration file that you can use to instruct your web server.

This file is usually located in the root directory of your website.

Put the following php_flag configs in your .htaccess file:

Save the configurations, and your web server will follow the .htaccess instructions the next time you run PHP code.

If that doesn’t work, try restarting your web server.

Now you’ve learned how to get PHP to display errors and warnings. Good work! 👍

Take your skills to the next level ⚡️

I'm sending out an occasional email with the latest tutorials on programming, web development, and statistics. Drop your email in the box below and I'll send new stuff straight into your inbox!

About

Hello! This website is dedicated to help you learn tech and data science skills with its step-by-step, beginner-friendly tutorials.
Learn statistics, JavaScript and other programming languages using clear examples written for people.

Type the keyword below and hit enter

Tags

Click to see all tutorials tagged with:

Источник

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