ID: 38024
Updated by: mez@php.net
Reported By: kermode at kermodebear dot org
-Status: Closed
+Status: Assigned
Bug Type: Documentation problem
Operating System: Ubuntu Linux
PHP Version: Irrelevant
-Assigned To:
+Assigned To: mez
New Comment:
This documentation issue still exists... The current documentation
reads:-
require() is identical to include() except upon failure it will
produce a fatal E_ERROR level error. In other words, it will halt the
script whereas include() only emits a warning (E_WARNING) which allows
the script to continue.
Should probably be
require() is identical to include() except upon failure it will *ALSO*
produce a fatal E_ERROR level error. In other words, it will halt the
script whereas include() only emits a warning (E_WARNING) which allows
the script to continue.
Obviously, without the emphasis.
Once I get back to a sane environment, I'll see if I can remember how
to fix the docs.
Previous Comments:
------------------------------------------------------------------------
[2007-01-22 01:20:30] didou@php.net
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
------------------------------------------------------------------------
[2006-07-06 16:56:04] judas dot iscariote at gmail dot com
this is the expected behaviour.
first warning comes from PHP internal stuff
and then a fatal error is raised.
------------------------------------------------------------------------
[2006-07-06 16:09:21] kermode at kermodebear dot org
Description:
------------
It appears that the require and require_once functions raise an
E_WARNING before raising an E_ERROR. This is inconsistent with the
documentation which implies that only an E_ERROR is raised when require
fails.
"The two constructs are identical in every way except how they handle
failure. include() produces a Warning while require() results in a
Fatal Error."
Code below tested with PHP versions 4.4.2 on RedHat Linux and 5.1.4 on
Ubuntu Linux. Same result.
Reproduce code:
---------------
function default_error_handler($code, $error, $file, $line) {
switch ($code) {
case E_WARNING:
echo "Warning: $error";
break;
default:
echo "Something Else: $error";
}
}
set_error_handler('default_error_handler');
require('This file does not exist. At least not here!');
Expected result:
----------------
Fatal error: require(): Failed opening required 'This file does not
exist. At least not here!'
(include_path='.:/usr/lib/php:/usr/local/lib/php') in
/home/kermode/test.php on line 12
Actual result:
--------------
Warning: require(This file does not exist. At least not here!): failed
to open stream: No such file or directory
Fatal error: require(): Failed opening required 'This file does not
exist. At least not here!'
(include_path='.:/usr/lib/php:/usr/local/lib/php') in
/home/kermode/test.php on line 12
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=38024&edit=1