ID: 49039
Updated by: [email protected]
Reported By: sant9442 at gmail dot com
-Status: Feedback
+Status: Assigned
Bug Type: CGI related
Operating System: Windows
PHP Version: 5.3.0
New Comment:
Thanks for the clear explanation :)
Ok, so it may be related to a bug with junctions and symlink in 5.3. I
will check it while working in the other related bugs (august, not
before :).
Previous Comments:
------------------------------------------------------------------------
[2009-07-23 23:02:25] sant9442 at gmail dot com
Small followup. I used SysInterna's ProcessMonitor and what I found,
that PHP 5.3 has a REVERSE ORDER LOOKUP of symbol link vs PHP 5.2.6
For example, for PHP 5.2.6, Process Monitor shows:
IRP_MJ_CREATE D:\ SUCCESS
IRP_MJ_DIRECTORY_CONTROL D:\wc63 SUCCESS
IRP_MJ_CLEANUP D:\ SUCCESS
IRP_MJ_CLOSE D:\ SUCCESS
IRP_MJ_CREATE D:\wc63 SUCCESS
IRP_MJ_DIRECTORY_CONTROL D:\wc63\http SUCCESS
IRP_MJ_CLEANUP D:\wc63 SUCCESS
IRP_MJ_CLOSE D:\wc63 SUCCESS
IRP_MJ_CREATE D:\wc63\http REPARSE
IRP_MJ_CREATE D:\wc63\http-4529 SUCCESS
IRP_MJ_DIRECTORY_CONTROL D:\wc63\http-4529\pwe SUCCESS
IRP_MJ_CLEANUP D:\wc63\http-4529 SUCCESS
IRP_MJ_CLOSE D:\wc63\http-4529 SUCCESS
IRP_MJ_CREATE D:\wc63\http-4529\pwe REPARSE
IRP_MJ_CREATE D:\wc63\http-4529\pwe SUCCESS
IRP_MJ_DIRECTORY_CONTROL D:\wc63\http-4529\pwe\phpinfo.php SUCCESS
In PHP 5.3, it does it reverse manner:
IRP_MJ_CREATE D:\wc63\http-4529\pwe REPARSE
IRP_MJ_CREATE D:\wc63\http-4529\pwe SUCCESS
IRP_MJ_DIRECTORY_CONTROL D:\wc63\http-4529\pwe\phpinfo.php SUCCESS
IRP_MJ_CLEANUP D:\wc63\http-4529\pwe SUCCESS
IRP_MJ_CLOSE D:\wc63\http-4529\pwe SUCCESS
IRP_MJ_CREATE D:\wc63\http REPARSE
IRP_MJ_CREATE D:\wc63\http-4529 SUCCESS
IRP_MJ_DIRECTORY_CONTROL D:\wc63\http-4529\pwe SUCCESS
IRP_MJ_CLEANUP D:\wc63\http-4529 SUCCESS
IRP_MJ_CLOSE D:\wc63\http-4529 SUCCESS
IRP_MJ_CREATE D:\wc63 SUCCESS
IRP_MJ_DIRECTORY_CONTROL D:\wc63\http SUCCESS
IRP_MJ_CLEANUP D:\wc63 SUCCESS
IRP_MJ_CLOSE D:\wc63 SUCCESS
IRP_MJ_CREATE D:\wc63\http SUCCESS
IRP_MJ_FILE_SYSTEM_CONTROL D:\wc63\http SUCCESS
IRP_MJ_CLEANUP D:\wc63\http SUCCESS
IRP_MJ_CLOSE D:\wc63\http SUCCESS
IRP_MJ_CREATE
G:\files\php\php5-3-1-snapshot\pwephpinfo.php NAME NOT FOUND
So PHP 5.3 symbolic link logic resolution logic seems broken :-)
--
------------------------------------------------------------------------
[2009-07-23 22:49:24] sant9442 at gmail dot com
> I find this whole report confusing. Let us try to make it simple.
Yes I agree, and thanks to your clue about junctions points and my
yesterday attempt to fool it with a junction pointing to a longer folder
name, I think I found the problem.
In our hosting server product installation folder, for example:
d:\wc63
we have a locked in sub folder name "HTTP"
d:\wc63\http
would be the so called "document root" folder.
Now, for my development or support, I create multiple HTTP-build# to
represent versions of our templates:
http-4521\
http-4522\
http-4525\
http-4529\
or I might have customer's copies of their HTTP folder
http-customer1\
http-customer2\
What I do is create a junction to symbolic name HTTP for example:
junction HTTP HTTP-4529
So in DOS, the DIR listing shows:
06/20/2009 09:22 PM <JUNCTION> http
07/23/2009 05:48 PM <DIR> http-4529
Now, I have a PWE (PHP for wildcat) script in
http-4529\pwe\phpinfo.php
which is linked to:
http\pwe\phpinfo.php
PHP 5.3 has a problem with this:
php.exe d:\wc63\http\pwe\phpinfo.php
Could not open input file: d:\wc63\http\pwe\phpinfo.php
php.exe d:\wc63\http-4529\pwe\phpinfo.php
HELLO PRIVATE
It appears PHP 5.3 has an issue with symbolic links,
This is not the case with 5.2.6.
g:\php526\php.exe d:\wc63\http\pwe\phpinfo.php
HELLO PRIVATE
Thanks
------------------------------------------------------------------------
[2009-07-23 22:03:31] [email protected]
I find this whole report confusing. Let us try to make it simple.
Please provide a single example where it fails with 5.3.0 and works
with 5.2.x, using a simple directory structure:
For example: c:\www\http\tst\t.php
Not using any junction, mklink or mounted directory.
Also without your custom extension.
------------------------------------------------------------------------
[2009-07-23 21:07:35] sant9442 at gmail dot com
From: [email protected]
> It does not make sense to me.
> Are these paths real paths or mounted (virtual or not),
> junctions, etc
Good question. All of the above was tried.
All this started with a programmer reported that our PHP extension
PHP_WILDCAT.DLL called PWE (PHP Wildcat Extenson) for 5.2.6 was not
working with 5.3.0.
Our installed creates to sub folders for PWE sample scripts:
Server side (using d:\wc63 install folder of our hosting server)
d:\wc63\http\pwe
d:\wc63\http\public\pwe
In our system, http is inherently private (authentication is required)
with the excepton of the public\ folder. So d:\wc6\http is the
docuument root, and URL references will be:
/pwe
/public/pwe
In any case, after downloading 5.3-WIN32 and the source code for VC6
builds, I recompiled the PHP_WILDCAT.DLL extension for 5.3. and the
first test was:
/pwe/phpinfo.php
to see the Wildcat! extension module info. But I got the "No Input
File Specified." error. I copied it to the public\pwe folder and tried
it:
/public/pwe/phpinfo.php
and that worked.
That began a 10 hour adventure to see what was going on. I focused on
the the ini CGI settings which were:
;doc_root =
cgi.force_redirect=0
;cgi.fix_pathinfo=1
and I wasted time trying all kinds of variations to no avail. What I
did finally realized that it wasn't related to our extension and could
repeat the problem via the command line, by simply emulating what the
web server would do:
cd \wc63\http
d:\wc63\php\php-cgi.exe d:\wc63\http\pwe\phpinfo.php
d:\wc63\php would be where PHP installed, but it can be anywhere of
course. The result of above is:
Status: 404 Not Found
X-Powered-By: PHP/5.3.0
Content-type: text/html
No input file specified.
Now, I have PHP 5.2.6, also installed
d:\wc63\php526\php-cgi.exe d:\wc63\http\pwe\phpinfo.php
X-Powered-By: PHP/5.2.6
Content-type: text/html
HELLO PRIVATE
Now, all I have to do is use a folder that is not 3 characters, which I
have one called WCPHP which I created and copied the script to:
d:\wc63\php\php-cgi.exe d:\wc63\http\wcphp\phpinfo.php
Status: 404 Not Found
Content-type: text/html
HELLO PRIVATE
Anyway, once I saw it was the 3 character PWE folder I was thinking of
how to fool it or change our installer to use longer folder names. I
even tried a junction
cd \wc63\http
junction wcphp pwe
and it that didn't work which left me wondering if PHP-CGI.EXE was
resolving the junction path.
This is all odd and rest assured, whether anyone can repeat it or not,
the issue does exist. I hope some one can trace thru the logic.
------------------------------------------------------------------------
[2009-07-23 20:36:07] [email protected]
It does not make sense to me.
Are these paths real paths or mounted (virtual or not), junctions,
etc?
------------------------------------------------------------------------
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/49039
--
Edit this bug report at http://bugs.php.net/?id=49039&edit=1