#38024 [Asn->Csd]: require() raises E_WARNING before E_ERROR

From: Date: Fri, 09 Oct 2009 22:47:07 +0000
Subject: #38024 [Asn->Csd]: require() raises E_WARNING before E_ERROR
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-2915@lists.php.net to get a copy of this message
ID: 38024 Updated by: mez@php.net Reported By: kermode at kermodebear dot org -Status: Assigned +Status: Closed Bug Type: Documentation problem Operating System: Ubuntu Linux PHP Version: Irrelevant Assigned To: mez New Comment: 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. Previous Comments: ------------------------------------------------------------------------ [2009-10-09 22:45:35] svn@php.net Automatic comment from SVN on behalf of mez Revision: http://svn.php.net/viewvc/?view=revision&revision=289452 Log: Fix wording for require (Closes: #38024) ------------------------------------------------------------------------ [2009-09-02 14:08:19] mez@php.net 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. ------------------------------------------------------------------------ [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

« previous php.doc.bugs (#2915) next »