The basic problem is as follows. If you have a parse error inside an included 
or required file, the execution stops just for that file and continues for 
the main script. The result is that normally a fatal (parse) error becomes a 
warning. Consequently, it may result in undefined behavior since whatever 
code was inside the included file was not entirely parsed and executed.

Ilia

On January 31, 2004 04:17 pm, you wrote:
> I think I missed out on the original problem. What does the fix, fix? Isn't
> a parse error automatically a fatal error?
> If you revert your patch what won't work?
> Andi
>
> At 09:59 AM 1/30/2004 -0500, Ilia Alshanetsky wrote:
> >It seems like the only way to distinguish between a parse error and a
> >non-existant file for regular include() is by doing a zend_stream_open()
> > upon failure to determine if the file is avaliable. If it is, then we
> > return a parse error and if it does not we continue execution. This does
> > add a small overhead for failed includes, but IMHO if a non-existant
> > files are being included performance is not a big consideration.
> >
> >That said, if there is much opposition to the approach I would be happy to
> >revert the code to the previous state.
> >
> >Ilia
> >
> >P.S. Suggested 'fix' is attached.
> >
> >On January 30, 2004 05:29 am, Rasmus Lerdorf wrote:
> > > Ilia, I think there is a problem with your latest fixes on the 4_3
> > > branch. Stuff that used to work is now broken.  Stuff like this:
> > >
> > > main.php:
> > >
> > >    include 'inc1.inc';
> > >
> > > inc1.inc:
> > >
> > >    @include 'inc2.inc';
> > >
> > > If inc2.inc does not exist we now get an error similar to:
> > >
> > > Warning: main(./lang/serendipity_lang_.inc.php): failed to open stream:
> > > No such file or directory in /var/www/s9y/serendipity_lang.inc.php on
> > > line 5
> > >
> > > Warning: main(): Failed opening './inc2.inc' for
> > > inclusion (include_path='.:/usr/local/lib/php') on line {the include
> > > line #}
> > >
> > > Fatal error: Parse error inside included file. in
> > > /var/www/htdocs/inc1.inc on line {the include line #}
> > >
> > > Remember that it is ok for an include to not find the file.  We issue a
> > > warning and move on.  It should in no way be treated as a fatal error.
> > >
> > > -Rasmus
> >
> >--
> >PHP Internals - PHP Runtime Development Mailing List
> >To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to