ID: 38024
Comment by: judas dot iscariote at gmail dot com
Reported By: kermode at kermodebear dot org
Status: Open
Bug Type: Documentation problem
Operating System: Ubuntu Linux
PHP Version: Irrelevant
New Comment:
this is the expected behaviour.
first warning comes from PHP internal stuff
and then a fatal error is raised.
Previous Comments:
------------------------------------------------------------------------
[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