ID:               49039
 Updated by:       paj...@php.net
 Reported By:      sant9442 at gmail dot com
-Status:           Assigned
+Status:           Feedback
 Bug Type:         CGI related
 Operating System: win32 only - Windows
 PHP Version:      5.3.0
 Assigned To:      pajoye
 New Comment:

Hi,

I was not able to reproduce this problem using:

F:\wc63>dir
<JUNCTION>     http [F:\wc63\http-1234]
<DIR>          http-1234

and the following call:

..\obj\Debug_TS\php-cgi.exe f:\wc63\http\pwe\t.php
X-Powered-By: PHP/5.3.1-dev
Content-type: text/html

included
F:\wc63\http-1234\pwe

script being: <?php echo "included\n"; print_r(getcwd());

Are you sure about the last line of the processmonitor log?
G:\files\php\php5-3-1-snapshot\pwephpinfo.php   NAME NOT FOUND

As it is not only missing a back slash but the path itself is
completely wrong. It should have been:

D:\wc63\http\pwe\phpinfo.php

If you still get the same (wrong) results, please give me a way to
reproduce it. Using one directory tree (D:\wc63\http with
D:\wc63\http-1234 for example) and how exactly you call php.




Previous Comments:
------------------------------------------------------------------------

[2009-07-23 23:15:20] sant9442 at gmail dot com

Sure thing!

Btw, take a look at the last line for the 5.3 Process Monitor dump,
where it shows:

G:\files\php\php5-3-1-snapshot\pwephpinfo.php   NAME NOT FOUND

Notice that it is missing a slash, so it seems its pointer movement is
off by one somewhere in the code, and I think this might be part of the
GPF that might occur as mentioned in bug #49040.

Thanks

------------------------------------------------------------------------

[2009-07-23 23:02:57] paj...@php.net

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 :).

------------------------------------------------------------------------

[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] 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.


------------------------------------------------------------------------

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

Reply via email to