Php error level all

Showing all errors and warnings [duplicate]

After restarting Apache, I still get no errors/warnings. UPDATE 1: I have changed error_reporting in php.ini from:

But the page will still not display errors/warnings of any kind. ORIGINAL QUESTION: The following script is generating a warning because the $err being inside the if statement. Why is this warning not being displayed on the PHP page in a web browser? I have to look at the Apache logs to see the warning. Also, if I deliberately change the «insert into» to «delete into», it does not display an error on the PHP page. Why are the errors not displaying on the actual PHP page?

    setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $STH = $DBH->prepare("delete into table1 (display_name, email, password) values ( :display_name, :email, :password )"); $STH->bindParam(':display_name', $_POST['display_name'], PDO::PARAM_STR, 100); $STH->bindParam(':email', $_POST['email'], PDO::PARAM_STR, 100); $STH->bindParam(':password', $_POST['password'], PDO::PARAM_STR, 100); $STH->execute(); $STH = $DBH->prepare("delete into table2 ( username, status, users_id ) values ( :username, :status, :users_id )"); $strStatus = 1; $STH->bindParam(':username', $_POST['display_name'], PDO::PARAM_STR, 100); $STH->bindParam(':status', $strStatus, PDO::PARAM_INT, 1); $STH->bindParam(':users_id', $_POST['referer'], PDO::PARAM_INT, 1); $STH->execute(); $DBH = null; > catch (PDOException $e) < echo $e->getMessage(); > header("Location: " . $_SERVER['PHP_SELF']); exit; > else < foreach ($_POST as $key =>$val) < $form[$key] = htmlspecialchars($val); >> > else < $form['display_name'] = $form['email'] = $form['password'] = ''; >?>    ?> 

Register

Referers id:


Name:
" />

Email:
" />

Password:
" />

Please re-read my question, we already know your error_reporting setting because it is in the script.

Please re-re-read my question. display_errors is entirely different from error_reporting . Also, your script overrides the error_reporting value set in the INI file.

Читайте также:  Php dom object to xml

6 Answers 6

Display errors could be turned off in the php.ini or your Apache configuration file.

You can turn it on in the script:

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

You should see the same messages in the PHP error log.

@oshirowanen ini_set() does not actually change the php.ini file, the script only «acts» like it is set like that in php.ini . From manual: Sets the value of the given configuration option. The configuration option will keep this new value during the script’s execution , and will be restored at the script’s ending .

@Charles Why would E_ALL remove E_NOTICE ? Doesn’t E_ALL by itself including everything, including E_NOTICE?

I was able to get all errors via the below code:

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

error_reporting(-1); should not be used. It may not work on every system. Instead should be error_reporting(E_ALL);

error_reporting(-1) should work just fine as it is given as example here: php.net/manual/en/function.error-reporting.php

The values for ini_set should actually be strings, such as ini_set(‘display_errors’, ‘1’); as per documentation and this is enforced when using strict typing (eg, declare(strict_types=1); )

PHP errors can be displayed by any of below methods:

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

Straight from the php.ini file:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Error handling and logging ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This directive informs PHP of which errors, warnings and notices you would like ; it to take action for. The recommended way of setting values for this ; directive is through the use of the error level constants and bitwise ; operators. The error level constants are below here for convenience as well as ; some common settings and their meanings. ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT ; those related to E_NOTICE and E_STRICT, which together cover best practices and ; recommended coding standards in PHP. For performance reasons, this is the ; recommend error reporting setting. Your production server shouldn't be wasting ; resources complaining about best practices and coding standards. That's what ; development servers and development settings are for. ; Note: The php.ini-development file has this setting as E_ALL. This ; means it pretty much reports everything which is exactly what you want during ; development and early testing. ; ; Error Level Constants: ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) ; E_ERROR - 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 - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was ; intentional (e.g., using an uninitialized variable and ; relying on the fact it is automatically initialized to an ; empty string) ; E_STRICT - run-time notices, enable to have PHP suggest changes ; to your code which will ensure the best interoperability ; and forward compatibility of your code ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; 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 code that will not work in future versions ; of PHP ; E_USER_DEPRECATED - user-generated deprecation warnings ; ; Common Values: ; E_ALL (Show all errors, warnings and notices including coding standards.) ; E_ALL & ~E_NOTICE (Show all errors, except for notices) ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT ; http://php.net/error-reporting error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 

For pure development I go for:

 error_reporting = E_ALL ^ E_NOTICE ^ E_WARNING 

Also don’t forget to put display_errors to on

After that, restart your server for Apache on Ubuntu:

sudo /etc/init.d/apache2 restart 

Источник

Предопределённые константы

Перечисленные ниже константы всегда доступны как часть ядра PHP.

Замечание: Данные имена констант можно использовать в файле php.ini но не вне PHP, как например в файле httpd.conf , где вместо них необходимо использовать значения их битовых масок.

Ошибки и протоколирование
Значение Константа Описание Примечание
1 E_ERROR ( int ) Фатальные ошибки времени выполнения. Это неустранимые средствами самого скрипта ошибки, такие как ошибка распределения памяти и т.п. Выполнение скрипта в таком случае прекращается.
2 E_WARNING ( int ) Предупреждения времени выполнения (не фатальные ошибки). Выполнение скрипта в таком случае не прекращается.
4 E_PARSE ( int ) Ошибки на этапе компиляции. Должны генерироваться только парсером.
8 E_NOTICE ( int ) Уведомления времени выполнения. Указывают на то, что во время выполнения скрипта произошло что-то, что может указывать на ошибку, хотя это может происходить и при обычном выполнении программы.
16 E_CORE_ERROR ( int ) Фатальные ошибки, которые происходят во время запуска РНР. Такие ошибки схожи с E_ERROR , за исключением того, что они генерируются ядром PHP.
32 E_CORE_WARNING ( int ) Предупреждения (не фатальные ошибки), которые происходят во время начального запуска РНР. Такие предупреждения схожи с E_WARNING , за исключением того, что они генерируются ядром PHP.
64 E_COMPILE_ERROR ( int ) Фатальные ошибки на этапе компиляции. Такие ошибки схожи с E_ERROR , за исключением того, что они генерируются скриптовым движком Zend.
128 E_COMPILE_WARNING ( int ) Предупреждения на этапе компиляции (не фатальные ошибки). Такие предупреждения схожи с E_WARNING , за исключением того, что они генерируются скриптовым движком Zend.
256 E_USER_ERROR ( int ) Сообщения об ошибках, сгенерированные пользователем. Такие ошибки схожи с E_ERROR , за исключением того, что они генерируются в коде скрипта средствами функции PHP trigger_error() .
512 E_USER_WARNING ( int ) Предупреждения, сгенерированные пользователем. Такие предупреждения схожи с E_WARNING , за исключением того, что они генерируются в коде скрипта средствами функции PHP trigger_error() .
1024 E_USER_NOTICE ( int ) Уведомления, сгенерированные пользователем. Такие уведомления схожи с E_NOTICE , за исключением того, что они генерируются в коде скрипта, средствами функции PHP trigger_error() .
2048 E_STRICT ( int ) Включаются для того, чтобы PHP предлагал изменения в коде, которые обеспечат лучшее взаимодействие и совместимость кода.
4096 E_RECOVERABLE_ERROR ( int ) Фатальные ошибки с возможностью обработки. Такие ошибки указывают, что, вероятно, возникла опасная ситуация, но при этом, скриптовый движок остаётся в стабильном состоянии. Если такая ошибка не обрабатывается функцией, определённой пользователем для обработки ошибок (смотрите set_error_handler() ), выполнение приложения прерывается, как происходит при ошибках E_ERROR .
8192 E_DEPRECATED ( int ) Уведомления времени выполнения об использовании устаревших конструкций. Включаются для того, чтобы получать предупреждения о коде, который не будет работать в следующих версиях PHP.
16384 E_USER_DEPRECATED ( int ) Уведомления времени выполнения об использовании устаревших конструкций, сгенерированные пользователем. Такие уведомления схожи с E_DEPRECATED за исключением того, что они генерируются в коде скрипта, с помощью функции PHP trigger_error() .
32767 E_ALL ( int ) Все поддерживаемые ошибки, предупреждения и замечания.

Представленные выше значения (как числовые, так и символьные) используются для задания битовой маски, определяющей об ошибках какого типа будет даваться отчёт. Вы можете использовать побитовые операторы, чтобы совмещать эти значения для указания определённых типов ошибок. Стоит отметить, что в php.ini допустимы только следующие операторы: ‘|’, ‘~’, ‘!’, ‘^’ и ‘&’.

Источник

Уровни ошибок РНР

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

Возможные значения директивы

Уровень ошибки Константа Описание ошибки
1 E_ERROR Ошибки обычных функций (критичные ошибки)
2 E_WARNING Обычные предупреждения (не критичные ошибки)
4 E_PARSE Ошибки синтаксического анализатора
8 E_NOTICE Замечания (аномалии в коде, возможные источники ошибок — следует отключить при наличии русского текста в коде, так как для интернациональных кодировок не обеспечивается корректная работа).
16 E_CORE_ERROR Ошибки обработчика
32 E_CORE_WARNING Предупреждения обработчика
64 E_COMPILE_ERROR Ошибки компилятора
128 E_COMPILE_WARNING Предупреждения компилятора
256 E_USER_ERROR Ошибки пользователей
512 E_USER_WARNING Предупреждения пользователей
1024 E_USER_NOTICE Уведомления пользователей
E_ALL Все ошибки

Вышеуказанные значения (цифровые или символьные) используются для построения битовой маски, которая специфицирует выводимое сообщение об ошибке. Вы можете использовать битовые операции для маскирования определённых типов ошибок. Обратите внимание, что только ‘|’, ‘~’, ‘!’ и ‘\&’ будут понятны в php.ini и что никакие битовые операции не будут понятны в php3.ini.

В PHP 4 значением по умолчанию для error_reporting будет E_ALL & ~E_NOTICE , что означает отображение всех ошибок и предупреждений, которые не имеют уровень E_NOTICE-level. В PHP 3 значение по умолчанию — E_ERROR | E_WARNING | E_PARSE означает то же самое.

Заметьте, однако, что, поскольку константы не поддерживаются в PHP 3 в файле php3.ini, установка error_reporting должна выполняться цифрами; то есть 7 по умолчанию.

Настройка при помощи php.ini

Параметр error_reporting позволяет устанавливать несколько уровней, используя побитовые флаги. К примеру, уровень:

error_reporting = E_ALL & ~E_NOTICE

позволяет выводить все ошибки, за исключением замечаний.

А для того чтобы показывать только ошибки (исключая предупреждения и замечания), директива должна быть настроена так, как показано ниже:

error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR

Настройка при помощи .htaccess

Включаем вывод ошибок в окно браузера и устанавливаем нужный уровень.

 
php_flag display_errors On
php_value error_reporting E_ALL

Настройка при помощи PHP

Включаем вывод ошибок в окно браузера и устанавливаем нужный уровень.

Ссылки

Источник

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