|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-07-23 19:00 UTC] sant9442 at gmail dot com
Description: ------------ After upgrading to 5.3 from 5.2.6, we began to see "No input file specified" errors with working URLs: /pwe/helloworld.php It was eventually discovered that renaming the pwe folder to something with 4 characters or more, then it would work. A subfolder name with 3 characters or less failed: Reproduce code: --------------- A url would be: /pwe/helloworld.php where pwe is a subfolder off the web server root document folder: d:\wc63\http So the web server script mapping spawn basically did this which can be emulated manually: cd \wc63\http d:\wc63\php-cgi.exe d:\wc63\http\pwe\helloworld.php This failed. Rename it to pwe1 and try: d:\wc63\php-cgi.exe d:\wc63\http\pwe1\helloworld.php and it should it work. Expected result: ---------------- A page is displayed Actual result: -------------- "No Input File Specified" PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 15:00:01 2025 UTC |
From: pajoye@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.> 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