ID: 39542
Updated by: sniper@php.net
Reported By: snowy at corporatezoo dot com
-Status: Open
+Status: Assigned
Bug Type: Scripting Engine problem
Operating System: Windows XP
PHP Version: 5.2.2
-Assigned To:
+Assigned To: dmitry
Previous Comments:
------------------------------------------------------------------------
[2007-05-05 14:35:02] snowy at coporatezoo dot com
Hi, just tried this with php 5.2.2 (win32) and it's still not behaving
as < 5.2.0
I still suspect it has to do with the "optimization" introduced for
require_once.
I actually believe the behaviour to be incorrect, in that (1) some sort
of namespace for the file is held in cache, albeit not case-sensitive,
and (2) in the wrong search order (.= current directory seems to always
be searched first, no matter what set_include_path stipulates)
I just find it strange that no once else comes across this problem?
------------------------------------------------------------------------
[2007-04-26 09:34:23] tony2001@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.2-win32-latest.zip
------------------------------------------------------------------------
[2007-03-15 07:13:58] snowy at coporatezoo dot com
Hi, so I caught this while reading the change log for 5.2.0:
"Optimized require_once() and include_once() by eliminating fopen(3) on
second usage. (Dmitry)"
Perhaps this might be the issue, it might be optimized, but I'm not
sure if it's entirely correct.
------------------------------------------------------------------------
[2007-03-12 07:28:07] snowy at coporatezoo dot com
tried this on 5.2.1 on OSX as well and it also fails.
Another thing:
if my file is in /project/docroot/file.php
even if I do a:
require_once('/project/classes/File.php');
it still fails.
Notice that it's (1) case insensitive, (2) the actual full path is
given in require_once.
I thought it may have been caching the full path, but looks like it's
only looking if '[F|f]ile.php' (the file name) has been loaded.
Ie, even
set_include_path('/project');
require_once('classes/file.php'); // give a path name to avoid
namespace clash
doesn't work.
Is this going to be fixed? Or should we go and change all our
include_once/require_once if we want to upgrade to > 5.1.6?
thx
------------------------------------------------------------------------
[2007-02-13 16:42:02] jsnell at e-normous dot com
still fails for me in the latest snapshot:
One other thing to note, it functions differently depending on where
you call the script from:
e-normous:/Users/jsnell/delete/php5/testcase/lib$
../../../php5.2-200702131330/sapi/cli/php ../test.php
/Users/jsnell/delete/php5/testcase/lib/
Included Test from lib/
vs.
e-normous:/Users/jsnell/delete/php5/testcase$
../../php5.2-200702131330/sapi/cli/php ./test.php
/Users/jsnell/delete/php5/testcase/lib/
and
e-normous:/Users/jsnell/delete/php5/testcase$
../../php5.2-200702131330/sapi/cli/php test.php
/Users/jsnell/delete/php5/testcase/lib/
------------------------------------------------------------------------
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
http://bugs.php.net/39542
--
Edit this bug report at http://bugs.php.net/?id=39542&edit=1