Req #41810 [Nab]: Unable to catch Parse Errors
| From: | rasmus@php.net | Date: | Sat, 15 Sep 2012 21:45:32 +0000 |
| Subject: | Req #41810 [Nab]: Unable to catch Parse Errors | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-173468@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=41810&edit=1
ID: 41810
Updated by: rasmus@php.net
Reported by: d dot albano at gmail dot com
Summary: Unable to catch Parse Errors
Status: Not a bug
Type: Feature/Change Request
Package: *General Issues
Operating System: Linux
PHP Version: 5.2.3
Block user comment: N
Private report: N
New Comment:
This can't be done safely within the same parser instance as your main script.
You will need to create a separate instance, as in system("php -l $script"); to
do that check. I would suggest you do this once when these scripts are created
and move them into a "checked" directory or something so you don't do it on every
include.
Previous Comments:
------------------------------------------------------------------------
[2012-09-15 20:53:11] james dot dobb at gmail dot com
I agree that this, perhaps not a bug but a missing feature needs to be addressed,
There should be a secure way of including scripts from another script and be able
to continue the calling script if an error occurs, the lack of functionality here
is causing me a major headache.....
------------------------------------------------------------------------
[2010-07-02 13:41:24] pajoye@php.net
It is not, please double read the manual about require/include_once.
------------------------------------------------------------------------
[2010-07-02 12:34:32] sneak at datavibe dot net
This classification is not bogus at all. Consider the following:
== main.php ==
<?php
$filename = sprintf("%s.php", 'myfile' );
include_once($filename);
?>
== myfile.php ==
<?php
syntax errors here !@#$%^&*()_
?>
The parsing of myfile.php must necessarily happen at main.php's RUNTIME, because
the filename is not available until sprintf() is called.
This is a bug.
------------------------------------------------------------------------
[2007-07-03 16:36:51] tony2001@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
------------------------------------------------------------------------
[2007-07-03 16:29:58] d dot albano at gmail dot com
Looking to the code looks simply to do the modification, naturally, as you said, the problem is
testing.
However i founded an eval behaviour to support my feature request: if there is a parse error
execution continues
Can be that this is a bug or an unwanted behaviour, however nothing start to work strange after that
a parse error was outputted.
So, if all works with eval why it shouldn't work correctly with normal parse errors?
Here there is some example code:
<?php
echo "BEGIN";
eval('echo "{$SYNTAX-ERROR"');
echo "END";
?>
It output
BEGIN
Parse error: syntax error, unexpected '-', expecting '}' in
C:\web\htdocs\test.php(5) : eval()'d code on line 1
END
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=41810
--
Edit this bug report at https://bugs.php.net/bug.php?id=41810&edit=1