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

Reply via email to