#36896 [Opn->Csd]: ErrorException does not work with include/require errors

From: Date: Tue, 28 Mar 2006 16:00:25 +0000
Subject: #36896 [Opn->Csd]: ErrorException does not work with include/require errors
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-95021@lists.php.net to get a copy of this message
ID: 36896 Updated by: tony2001@php.net Reported By: akorthaus at web dot de -Status: Open +Status: Closed Bug Type: Scripting Engine problem Operating System: Linux 2.4.32 (gentoo) PHP Version: 5.1.2 New Comment: Fixed in CVS yesterday. Previous Comments: ------------------------------------------------------------------------ [2006-03-28 17:51:44] akorthaus at web dot de Description: ------------ The ErrorException class bundled with PHP 5.1 does not work with Warnings/Fatal Errors produced by include() and require(). Reproduce code: --------------- <?php function ErrorsToExceptions($severity, $message) { throw new ErrorException($message, 0, $severity); } set_error_handler('ErrorsToExceptions'); try { include('./DOES_NOT_EXIST'); } catch (Exception $e) { echo get_class($e) . " catched!\n" echo $e->getMessage(); } ?> Expected result: ---------------- should throw an ErrorException and display $e->getMessage(), and should NOT display a PHP Warning. Actual result: -------------- Warning: main(): Failed opening './DOES_NOT_EXIST' for inclusion (include_path='.:') in /home/akorthaus/test/exc4.php on line 16 ErrorException catched! include(./DOES_NOT_EXIST): failed to open stream: No such file or directory if I replace "include" with "require", I get: Fatal error: main(): Failed opening required './DOES_NOT_EXIST' (include_path='.:') in /home/akorthaus/test/exc4.php on line 14 if I replace "require" with "file_get_contents", I get: ErrorException catched! file_get_contents(./DOES_NOT_EXIST): failed to open stream: No such file or directory That's what I'd expect to see from include() and require() too (ErrorException also works with other Fatal Errors!). So include() seems to throw an ErrorException, but additionaly displays the PHP Warning, require only displays the PHP Fatal Error, and does not throw an Exception at all. Is this intended? Is it somewhere documented how ErrorException works or should be used? ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36896&edit=1

« previous php.bugs (#95021) next »