RE: [PHP] require_once and E_WARNING?
chris smith wrote: > try it with a call to an undefined function e.g.: > $foo = thisFunctionDoesNotExistAtLeastItHadBetterNot(); When this is done, the error handler doesn't get called at all, and the script simply dies with an error message (which could be a bug as well, but might also be considered a 'parse error' even if it happens at runtime; I doubt they would fix it). I read through the set_error_handler() documentation again though, and I found that: " The following error types cannot be handled with a user defined function: E_ERROR[...]" So, I'm guessing that the require() functions raise an E_WARNING before the E_ERROR. Seems odd. Perhaps what happens "under the hood" is that require() calls include(), which would raise an E_WARNING when it fails, then the require() code checks the result of include() and if it failed then it raises the E_ERROR. It pays to RTFM more closely, it seems. (o; My bad. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] require_once and E_WARNING?
On Thu, 6 Jul 2006, chris smith wrote: Have you tried this handler with something more fatal, like a missing semi-colon or a } missmatch? That will cause a parse error and the script won't even run. You're right. My wrong. :-( -- 21:50:04 up 2 days, 9:07, 0 users, load average: 0.92, 0.37, 0.18 - Lic. Martín Marqués | SELECT 'mmarques' || Centro de Telemática| '@' || 'unl.edu.ar'; Universidad Nacional| DBA, Programador, del Litoral | Administrador - -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] require_once and E_WARNING?
chris smith wrote: > On 7/6/06, Martin Marques wrote: >> On Wed, 5 Jul 2006, [EMAIL PROTECTED] wrote: >> >> > Hello all, >> > >> > According to the PHP Manual, when require or require_once failes, an >> > E_ERROR is triggered: "require() and include() are identical in >> every way >> > except how they handle failure. include() produces a Warning while >> > require() results in a Fatal Error." (With 'Fatal Error' being a >> link to >> > E_ERROR). >> > >> > Thing is, when using a custom error handler via set_error_handler(), it >> > appears to be triggering an E_WARNING, not an E_ERROR. Using PHP 5.1.4 >> > under Linux. >> > >> > There are one of three possibilities: I am suffering from a lapse in >> > lucidity (common), the manual is wrong (possible), or PHP is broken >> > somehow (unlikely). I'm guessing it's the first, but what am I doing >> > wrong? I'd like to get a second opinion before submitting a bug. I >> > searched bugs.php.net but was unable to find anything relevant for >> 5.1.4. >> > >> > Code: >> > function default_error_handler($code, $error, $file, $line) { >> > switch ($code) { >> > case E_ERROR: >> > die ("Error: $error"); >> > case E_WARNING: >> > die("Warning: $error"); >> > default: >> > die("Something else entirely: $error"); >> > } >> > } >> >> What happens if you put breaks after the die()? This shouldn't be >> necesary, but it wouldn't hurt to try. ;-) >> >> As I see in the example of the PHP manual, a break is put even after an >> exit(1) call. >> >> > set_error_handler('default_error_handler'); >> > require('This file does not exist. At least not here!'); >> >> Have you tried this handler with something more fatal, like a missing >> semi-colon or a } missmatch? > > That will cause a parse error and the script won't even run. try it with a call to an undefined function e.g.: $foo = thisFunctionDoesNotExistAtLeastItHadBetterNot(); > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] require_once and E_WARNING?
On 7/6/06, Martin Marques wrote: On Wed, 5 Jul 2006, [EMAIL PROTECTED] wrote: > Hello all, > > According to the PHP Manual, when require or require_once failes, an > E_ERROR is triggered: "require() and include() are identical in every way > except how they handle failure. include() produces a Warning while > require() results in a Fatal Error." (With 'Fatal Error' being a link to > E_ERROR). > > Thing is, when using a custom error handler via set_error_handler(), it > appears to be triggering an E_WARNING, not an E_ERROR. Using PHP 5.1.4 > under Linux. > > There are one of three possibilities: I am suffering from a lapse in > lucidity (common), the manual is wrong (possible), or PHP is broken > somehow (unlikely). I'm guessing it's the first, but what am I doing > wrong? I'd like to get a second opinion before submitting a bug. I > searched bugs.php.net but was unable to find anything relevant for 5.1.4. > > Code: > function default_error_handler($code, $error, $file, $line) { > switch ($code) { > case E_ERROR: > die ("Error: $error"); > case E_WARNING: > die("Warning: $error"); > default: > die("Something else entirely: $error"); > } > } What happens if you put breaks after the die()? This shouldn't be necesary, but it wouldn't hurt to try. ;-) As I see in the example of the PHP manual, a break is put even after an exit(1) call. > set_error_handler('default_error_handler'); > require('This file does not exist. At least not here!'); Have you tried this handler with something more fatal, like a missing semi-colon or a } missmatch? That will cause a parse error and the script won't even run. -- Postgresql & php tutorials http://www.designmagick.com/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] require_once and E_WARNING?
On Wed, 5 Jul 2006, [EMAIL PROTECTED] wrote: Hello all, According to the PHP Manual, when require or require_once failes, an E_ERROR is triggered: "require() and include() are identical in every way except how they handle failure. include() produces a Warning while require() results in a Fatal Error." (With 'Fatal Error' being a link to E_ERROR). Thing is, when using a custom error handler via set_error_handler(), it appears to be triggering an E_WARNING, not an E_ERROR. Using PHP 5.1.4 under Linux. There are one of three possibilities: I am suffering from a lapse in lucidity (common), the manual is wrong (possible), or PHP is broken somehow (unlikely). I'm guessing it's the first, but what am I doing wrong? I'd like to get a second opinion before submitting a bug. I searched bugs.php.net but was unable to find anything relevant for 5.1.4. Code: function default_error_handler($code, $error, $file, $line) { switch ($code) { case E_ERROR: die ("Error: $error"); case E_WARNING: die("Warning: $error"); default: die("Something else entirely: $error"); } } What happens if you put breaks after the die()? This shouldn't be necesary, but it wouldn't hurt to try. ;-) As I see in the example of the PHP manual, a break is put even after an exit(1) call. set_error_handler('default_error_handler'); require('This file does not exist. At least not here!'); Have you tried this handler with something more fatal, like a missing semi-colon or a } missmatch? -- 21:50:04 up 2 days, 9:07, 0 users, load average: 0.92, 0.37, 0.18 - Lic. Martín Marqués | SELECT 'mmarques' || Centro de Telemática| '@' || 'unl.edu.ar'; Universidad Nacional| DBA, Programador, del Litoral | Administrador - -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] require_once and E_WARNING?
>> Code: >> function default_error_handler($code, $error, $file, $line) { >>switch ($code) { >>case E_ERROR: >> die ("Error: $error"); >>case E_WARNING: >> die("Warning: $error"); >>default: >> die("Something else entirely: $error"); >>} >> } >> set_error_handler('default_error_handler'); >> require('This file does not exist. At least not here!'); >> >> Result: >> Warning: require(This file does not exist. At least not here!) >> [function.require]: failed to open stream: No such file or directory >> >> Expected Result: >> Error: require(This file does not exist. At least not here!) >> [function.require]: failed to open stream: No such file or directory >> > > If you comment out the 'set_error_handler' line what happens? Do you get > what you expect (and what should happen) ? > > It looks like a pretty simple bug report to me but others may have > reasons why it's not working. Without the error handler, I get the expected result: A fatal error with the script dying. That is what makes this so mysterious. Doesn't make sense that it would raise a different kind of error under different circumstances. It should have the same value every time. I'm going to sit on this for a day or so and see what people say before I toss it over to the bug folks. No sense in bothering them if I'm being a bonehead. (o; -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] require_once and E_WARNING?
[EMAIL PROTECTED] wrote: Hello all, According to the PHP Manual, when require or require_once failes, an E_ERROR is triggered: "require() and include() are identical in every way except how they handle failure. include() produces a Warning while require() results in a Fatal Error." (With 'Fatal Error' being a link to E_ERROR). Thing is, when using a custom error handler via set_error_handler(), it appears to be triggering an E_WARNING, not an E_ERROR. Using PHP 5.1.4 under Linux. There are one of three possibilities: I am suffering from a lapse in lucidity (common), the manual is wrong (possible), or PHP is broken somehow (unlikely). I'm guessing it's the first, but what am I doing wrong? I'd like to get a second opinion before submitting a bug. I searched bugs.php.net but was unable to find anything relevant for 5.1.4. Code: function default_error_handler($code, $error, $file, $line) { switch ($code) { case E_ERROR: die ("Error: $error"); case E_WARNING: die("Warning: $error"); default: die("Something else entirely: $error"); } } set_error_handler('default_error_handler'); require('This file does not exist. At least not here!'); Result: Warning: require(This file does not exist. At least not here!) [function.require]: failed to open stream: No such file or directory Expected Result: Error: require(This file does not exist. At least not here!) [function.require]: failed to open stream: No such file or directory If you comment out the 'set_error_handler' line what happens? Do you get what you expect (and what should happen) ? It looks like a pretty simple bug report to me but others may have reasons why it's not working. -- Postgresql & php tutorials http://www.designmagick.com/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] require_once and E_WARNING?
Hello all, According to the PHP Manual, when require or require_once failes, an E_ERROR is triggered: "require() and include() are identical in every way except how they handle failure. include() produces a Warning while require() results in a Fatal Error." (With 'Fatal Error' being a link to E_ERROR). Thing is, when using a custom error handler via set_error_handler(), it appears to be triggering an E_WARNING, not an E_ERROR. Using PHP 5.1.4 under Linux. There are one of three possibilities: I am suffering from a lapse in lucidity (common), the manual is wrong (possible), or PHP is broken somehow (unlikely). I'm guessing it's the first, but what am I doing wrong? I'd like to get a second opinion before submitting a bug. I searched bugs.php.net but was unable to find anything relevant for 5.1.4. Code: function default_error_handler($code, $error, $file, $line) { switch ($code) { case E_ERROR: die ("Error: $error"); case E_WARNING: die("Warning: $error"); default: die("Something else entirely: $error"); } } set_error_handler('default_error_handler'); require('This file does not exist. At least not here!'); Result: Warning: require(This file does not exist. At least not here!) [function.require]: failed to open stream: No such file or directory Expected Result: Error: require(This file does not exist. At least not here!) [function.require]: failed to open stream: No such file or directory -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php