mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-16 08:58:56 +00:00
Some clarifications & fixes.
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@30586 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
4a2d9feae9
commit
43c780cb79
1 changed files with 147 additions and 126 deletions
|
@ -2,141 +2,162 @@
|
|||
<title>Error handling</title>
|
||||
|
||||
<para>
|
||||
There are several types of errors and warnings in PHP. They are:
|
||||
There are several types of errors and warnings in PHP. They are:
|
||||
|
||||
<table>
|
||||
<title>PHP error types</title>
|
||||
<tgroup cols="4">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>value</entry>
|
||||
<entry>symbolic</entry>
|
||||
<entry>description</entry>
|
||||
<entry>note</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>1</entry>
|
||||
<entry>E_ERROR</entry>
|
||||
<entry>fatal run-time errors</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>2</entry>
|
||||
<entry>E_WARNING</entry>
|
||||
<entry>run-time warnings (non fatal errors)</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>4</entry>
|
||||
<entry>E_PARSE</entry>
|
||||
<entry>compile-time parse errors</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>8</entry>
|
||||
<entry>E_NOTICE </entry>
|
||||
<entry>
|
||||
run-time notices (less serious than warnings)
|
||||
</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>16</entry>
|
||||
<entry>E_CORE_ERROR</entry>
|
||||
<entry>fatal errors that occur during PHP's initial startup</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>32</entry>
|
||||
<entry>E_CORE_WARNING</entry>
|
||||
<entry>warnings (non fatal errors) that occur during PHP's initial startup</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>64</entry>
|
||||
<entry>E_COMPILE_ERROR</entry>
|
||||
<entry>fatal compile-time errors</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>128</entry>
|
||||
<entry>E_COMPILE_WARNING</entry>
|
||||
<entry>compile-time warnings (non fatal errors)</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>256</entry>
|
||||
<entry>E_USER_ERROR</entry>
|
||||
<entry>user-generated error message</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>512</entry>
|
||||
<entry>E_USER_WARNING</entry>
|
||||
<entry>user-generated warning message</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>1024</entry>
|
||||
<entry>E_USER_NOTICE </entry>
|
||||
<entry>user-generated notice message</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>E_ALL</entry>
|
||||
<entry>all of the above</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</para>
|
||||
<table>
|
||||
<title>PHP error types</title>
|
||||
<tgroup cols="4">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Value</entry>
|
||||
<entry>Constant</entry>
|
||||
<entry>Description</entry>
|
||||
<entry>Note</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>1</entry>
|
||||
<entry>E_ERROR</entry>
|
||||
<entry>fatal run-time errors</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>2</entry>
|
||||
<entry>E_WARNING</entry>
|
||||
<entry>run-time warnings (non fatal errors)</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>4</entry>
|
||||
<entry>E_PARSE</entry>
|
||||
<entry>compile-time parse errors</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>8</entry>
|
||||
<entry>E_NOTICE </entry>
|
||||
<entry>
|
||||
run-time notices (less serious than warnings)
|
||||
</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>16</entry>
|
||||
<entry>E_CORE_ERROR</entry>
|
||||
<entry>fatal errors that occur during PHP's initial startup</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>32</entry>
|
||||
<entry>E_CORE_WARNING</entry>
|
||||
<entry>warnings (non fatal errors) that occur during PHP's initial startup</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>64</entry>
|
||||
<entry>E_COMPILE_ERROR</entry>
|
||||
<entry>fatal compile-time errors</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>128</entry>
|
||||
<entry>E_COMPILE_WARNING</entry>
|
||||
<entry>compile-time warnings (non fatal errors)</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>256</entry>
|
||||
<entry>E_USER_ERROR</entry>
|
||||
<entry>user-generated error message</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>512</entry>
|
||||
<entry>E_USER_WARNING</entry>
|
||||
<entry>user-generated warning message</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>1024</entry>
|
||||
<entry>E_USER_NOTICE </entry>
|
||||
<entry>user-generated notice message</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>E_ALL</entry>
|
||||
<entry>all of the above, as supported</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The above values (either numerical or sombolic) are used to build up a
|
||||
bitmask that specifies which errors to report. You can use the bitwise
|
||||
operators '|','&' and '~' to combine theese values or mask out certain
|
||||
types of errors. The default settings that will report anything but notice
|
||||
messages are <literal>E_ALL & ~E_NOTICE</literal> for PHP4 and 7 for PHP 3
|
||||
(PHP 3 does not support the symbolic constants).
|
||||
</para>
|
||||
<para>
|
||||
The above values (either numerical or symbolic) are used to build
|
||||
up a bitmask that specifies which errors to report. You can use the
|
||||
<link linkend="language.operators.bitwise">bitwise operators</link>
|
||||
to combine these values or mask out certain types of errors. Note
|
||||
that only '|', '~', '!', and '&' will be understood within
|
||||
<filename>php.ini</filename>, however, and that no bitwise
|
||||
operators will be understood within <filename>php3.ini</filename>.
|
||||
</para>
|
||||
<para>
|
||||
In PHP 4, the default <link
|
||||
linkend="ini.error-reporting">error_reporting</link> setting is
|
||||
<literal>E_ALL & ~E_NOTICE</literal>, meaning to display all errors
|
||||
and warnings which are not E_NOTICE-level. In PHP 3, the default
|
||||
setting is <literal>(E_ERROR | E_WARNING | E_PARSE)</literal>,
|
||||
meaning the same thing. Note, however, that since constants are not
|
||||
supported in PHP 3's <filename>php3.ini</filename>, the <link
|
||||
linkend="ini.error-reporting">error_reporting</link> setting there
|
||||
must be numeric; hence, it is <literal>7</literal>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The settings can be changed in the ini file with the error_reporting
|
||||
directive. It can also be set in your Apache httpd.conf file with
|
||||
the php_error_reporting (php3_error_reporting for PHP 3)
|
||||
directive or lastly it may be set at runtime within a script using
|
||||
the <function>error_reporting</function> function.
|
||||
</para>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
When upgrading code or servers from PHP 3 to PHP 4 you should check
|
||||
theese settings and calls to <function>error_reporting</function> or
|
||||
you might disable reporting the new error types, especially E_COMPILE_ERROR.
|
||||
This may lead to empty documents without any feedback of what happened
|
||||
<para>
|
||||
The initial setting can be changed in the ini file with the <link
|
||||
linkend="ini.error-reporting">error_reporting</link> directive, in
|
||||
your Apache <filename>httpd.conf</filename> file with the
|
||||
php_error_reporting (php3_error_reporting for PHP 3) directive, and
|
||||
lastly it may be set at runtime within a script by using the
|
||||
<function>error_reporting</function> function.
|
||||
</para>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
When upgrading code or servers from PHP 3 to PHP 4 you should
|
||||
check these settings and calls to
|
||||
<function>error_reporting</function> or you might disable
|
||||
reporting the new error types, especially E_COMPILE_ERROR. This
|
||||
may lead to empty documents without any feedback of what happened
|
||||
or where to look for the problem.
|
||||
</para>
|
||||
</warning>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
All <link linkend="language.expressions">PHP expressions</link> can also be called
|
||||
with the "@" prefix, which turns off error reporting for that particular
|
||||
expression. If an error occurred during such an expression and the
|
||||
<link linkend="ini.track-errors">track_errors</link> feature
|
||||
is enabled, you can find the error message in the global variable
|
||||
<para>
|
||||
All <link linkend="language.expressions">PHP expressions</link> can
|
||||
also be called with the "@" prefix, which turns off error reporting
|
||||
for that particular expression. If an error occurred during such
|
||||
an expression and the <link
|
||||
linkend="ini.track-errors">track_errors</link> feature is enabled,
|
||||
you can find the error message in the global variable
|
||||
$php_errormsg.
|
||||
</para>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
Currently the "@" prefix will even disable error reporting for critical
|
||||
errors that will terminate script execution.
|
||||
</para>
|
||||
</warning>
|
||||
<warning>
|
||||
<para>
|
||||
Currently the <link linkend="language.operators.errorcontrol">@
|
||||
error-control operator</link> prefix will even disable error
|
||||
reporting for critical errors that will terminate script
|
||||
execution. Among other things, this means that if you use <link
|
||||
linkend="language.operators.errorcontrol">@</link> to suppress
|
||||
errors from a certain function and either it isn't available or
|
||||
has been mistyped, the script will die right there with no
|
||||
indication as to why.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
|
Loading…
Reference in a new issue