ID: 49039 Comment by: sant9442 at gmail dot com Reported By: sant9442 at gmail dot com Status: Feedback Bug Type: CGI related Operating System: Windows PHP Version: 5.3.0 New Comment:
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 :-) -- Previous Comments: ------------------------------------------------------------------------ [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] paj...@php.net 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: paj...@php.net > 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] paj...@php.net It does not make sense to me. Are these paths real paths or mounted (virtual or not), junctions, etc? ------------------------------------------------------------------------ [2009-07-23 20:11:32] sant9442 at gmail dot com I am getting mixed results: All these are called from my d:\wc63\http document root folder (not set in the ini, by switched there by the web server which also sets DOCUMENT_ROOT=d:\wc63\http : D:\wc63\http>G:\files\php\php5.3-200907231830\php-cgi v:\wc5beta\http\wcphp\phpinfo.php PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Status: 404 Not Found X-Powered-By: PHP/5.3.1-dev Content-type: text/html No input file specified. D:\wc63\http>G:\files\php\php5.3-200907231830\php-cgi v:\wc5beta\http\wcphp\phpinfo.php PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Status: 404 Not Found X-Powered-By: PHP/5.3.1-dev Content-type: text/html No input file specified. D:\wc63\http>G:\files\php\php5.3-200907231830\php-cgi v:\wc5beta\http\pwe\phpinfo.php PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Status: 404 Not Found X-Powered-By: PHP/5.3.1-dev Content-type: text/html No input file specified. D:\wc63\http>G:\files\php\php5.3-200907231830\php-cgi d:\wc63\http\public\pwe\phpinfo.php X-Powered-By: PHP/5.3.1-dev Content-type: text/html hello D:\wc63\http>G:\php526\php-cgi.exe d:\wc63\http\public\pwe\phpinfo.php X-Powered-By: PHP/5.2.6 Content-type: text/html hello D:\wc63\http>G:\php526\php-cgi.exe d:\wc63\http\public\wcphp\phpinfo.php Status: 404 Not Found X-Powered-By: PHP/5.2.6 Content-type: text/html No input file specified. D:\wc63\http>G:\php526\php-cgi.exe d:\wc63\http\pwe\phpinfo.php X-Powered-By: PHP/5.2.6 Content-type: text/html HELLO PRIVATE I don't wish to spend another ten hours on this trying to explain it. As shown in the last example, none of these php-cgi.exe command line issues appear in 5.2.6 or lesser version. Only with 5.3. Here is my analysis of the situation. In 5.3, there was a massive change to the parsing and file name resolution logic. There are issues with it. Unfortunately, I lack the time to get into a windows recompiling project I can trace it down. The last time I did that I lost a tooth. :-) Please also see bug #49040 which was found during the time trying to figure this out expecting it was related to the cgi ini settings and/or the env settings where were not the case. thanks ------------------------------------------------------------------------ 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