It’s possible to enable or disable display of error messages in your PHP program by using the command
error_reporting(‘some constant’); // see below for values of constant
Errors and Logging
Value |
Constant |
Description |
Note |
1 |
E_ERROR (integer) |
Fatal run-time errors. These indicate errors that can not be recovered from, such as a memory allocation problem. Execution of the script is halted. |
|
2 |
E_WARNING (integer) |
Run-time warnings (non-fatal errors). Execution of the script is not halted. |
|
4 |
E_PARSE (integer) |
Compile-time parse errors. Parse errors should only be generated by the parser. |
|
8 |
E_NOTICE (integer) |
Run-time notices. Indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. |
|
16 |
E_CORE_ERROR (integer) |
Fatal errors that occur during PHP’s initial startup. This is like an E_ERROR, except it is generated by the core of PHP. |
since PHP 4 |
32 |
E_CORE_WARNING (integer) |
Warnings (non-fatal errors) that occur during PHP’s initial startup. This is like an E_WARNING, except it is generated by the core of PHP. |
since PHP 4 |
64 |
E_COMPILE_ERROR (integer) |
Fatal compile-time errors. This is like an E_ERROR, except it is generated by the Zend Scripting Engine. |
since PHP 4 |
128 |
E_COMPILE_WARNING (integer) |
Compile-time warnings (non-fatal errors). This is like an E_WARNING, except it is generated by the Zend Scripting Engine. |
since PHP 4 |
256 |
E_USER_ERROR (integer) |
User-generated error message. This is like an E_ERROR, except it is generated in PHP code by using the PHP function trigger_error(). |
since PHP 4 |
512 |
E_USER_WARNING (integer) |
User-generated warning message. This is like an E_WARNING, except it is generated in PHP code by using the PHP function trigger_error(). |
since PHP 4 |
1024 |
E_USER_NOTICE (integer) |
User-generated notice message. This is like an E_NOTICE, except it is generated in PHP code by using the PHP function trigger_error(). |
since PHP 4 |
2048 |
E_STRICT (integer) |
Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code. |
since PHP 5 |
4096 |
E_RECOVERABLE_ERROR (integer) |
Catchable fatal error. It indicates that a probably dangerous error occured, but did not leave the Engine in an unstable state. If the error is not caught by a user defined handle (see also set_error_handler()), the application aborts as it was an E_ERROR. |
since PHP 5.2.0 |
8192 |
E_DEPRECATED (integer) |
Run-time notices. Enable this to receive warnings about code that will not work in future versions. |
since PHP 5.3.0 |
16384 |
E_USER_DEPRECATED (integer) |
User-generated warning message. This is like an E_DEPRECATED, except it is generated in PHP code by using the PHP function trigger_error(). |
since PHP 5.3.0 |
30719 |
E_ALL (integer) |
All errors and warnings, as supported, except of level E_STRICT. |
30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously |
The above values (either numerical or symbolic) are used to build up a bitmask that specifies which errors to report. You can use the bitwise operators to combine these values or mask out certain types of errors. Note that only ‘|’, ‘~’, ‘!’, ‘^’ and ‘&’ will be understood within php.ini.
— end of paste —
While it’s nice to disable display of error messages, for example:
Notice: Undefined index:….
which allows me to use the $_POST command and mimics the behaviour of ASP, it may cause more headaches during debugging because of typos.
For example: This mimics the behavior of ASP with regards to handling of form values. i.e. no errors when you try to access a form variable that has not been POSTED yet.
error_reporting(E_ERROR);
echo "<p>new error status: " . ini_get('error_reporting');
echo "<br>about to POST";
$varUserName = $_POST["frmUserName"];
echo "<p>";
error_reporting(E_NOTICE);echo "<br>About to POST";
$varUserName = $_POST["frmUserName"];
OUTPUT as follows:
new error status: 1
about to POST
new error status: 8
About to POST
Notice: Undefined index: frmUserName in /VirtualHosts/TestSite/TMP1JKJKENQ3Y.php on line 13
The PROBLEM is if I mistype something in the program, example, $_POST… there won’t be any error message displayed.
<?php
error_reporting(E_ERROR);
echo "<p>new error status: " . ini_get('error_reporting');
echo "<br>about to POST";
$varUserName = $_POSTs["frmUserName"];
echo "<p>";
error_reporting(E_NOTICE);echo "<br>About to POST";
$varUserName = $_POST["frmUserName"];
?>
In this second example, the typo was $_POSTs (with an extra “s”). It returns the same result as the first example:
new error status: 1
about to POST
new error status: 8
About to POST
Notice: Undefined index: frmUserName in /VirtualHosts/TestSite/TMP1NH4TENQ93.php on line 13
I think I should just “suck it up” and enable all error reporting, and that would force me to write a “cleaner” and less “sloppy” code… one in which PHP will be all happy, without any errors or undefined variables, etc..