ID:               48746
 Comment by:       shoresofnowhere at gmail dot com
 Reported By:      ddkees at illinois dot edu
 Status:           Feedback
 Bug Type:         Directory function related
 Operating System: win32 only - Windows Server 2003
 PHP Version:      5.3.0
 Assigned To:      pajoye
 New Comment:

Still not working correctly in latest snapshot: now if you have

dir1 directory
subdir1 subdirectory of dir1

dir2 directory
junction1 junction to subdir1 created in dir2

and from a file accessed as dir2/junction1/file.php you reference to
the ../ dir, you get to the dir1 directory, while the correct behaviour
is to get to dir2!

You can see the difference if you try this setup with 5.2.10, which
works ok.


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

[2009-08-29 12:23:01] paj...@php.net

Thanks for the testing! :)

Added support for mounted volumes (and path resolutions for them). The
next snapshots (5.3+) should have it.

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

[2009-08-29 12:21:48] s...@php.net

Automatic comment from SVN on behalf of pajoye
Revision: http://svn.php.net/viewvc/?view=revision&revision=287877
Log: - Fix #48746, mounted volume support & resolution

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

[2009-08-27 19:37:08] phpstuff at cresstone dot com

Ok, this snap seems to get everything except mounted volumes for me.

test output is now:
C:\mnt\test>php phptest.php
directory:              bool(true)
junction.exe junction:  bool(true)
mklink junction:        bool(true)
mounted volume:         bool(false)

I've found 3 ways to create volume junction points on Win 7: Through
the mountvol command, thourgh the mklink command, and though the
diskmgmt.msc GUI. They all result in the same behavior.

I also just found that mklink can create symlinks to volumes, which,
alas, also fail. (symlinks to directories & files work fine) 'dir'
command for symlinks vs. junctions to volumes looks like this:

2009.08.27  15.18    <SYMLINKD>     test2
[\\?\Volume{c7981ed5-d602-11dd-ac24-806e6f6e6963}\]
2009.08.27  15.19    <JUNCTION>     test3
[\\?\Volume{c7981ed5-d602-11dd-ac24-806e6f6e6963}\]


For the record, the following command sequence can be used to re-create
my test setup... c:\mnt & c:\mnt\test are regular directories. 

C:\mnt\test>mkdir directory

C:\mnt\test>junction junction directory

Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals - http://www.sysinternals.com

Created: C:\mnt\test\junction
Targetted at: C:\mnt\test\directory

C:\mnt\test>mklink /j mklink_junction directory
Junction created for mklink_junction <<===>> directory

C:\mnt\test>mklink /j mounted_volume
\\?\Volume{c7981ed5-d602-11dd-ac24-806e6f6e6963}\
Junction created for mounted_volume <<===>>
\\?\Volume{c7981ed5-d602-11dd-ac24-806e6f6e6963}\

C:\mnt\test>dir
 Volume in drive C is coreI7_System
 Volume Serial Number is 38E2-2B62

 Directory of C:\mnt\test

2009.08.27  15.29    <DIR>          .
2009.08.27  15.29    <DIR>          ..
2009.08.27  15.27    <DIR>          directory
2009.08.27  15.27    <JUNCTION>     junction
[\??\C:\mnt\test\directory]
2009.08.27  15.28    <JUNCTION>     mklink_junction
[C:\mnt\test\directory]
2009.08.27  15.29    <JUNCTION>     mounted_volume
[\\?\Volume{c7981ed5-d602-11dd-ac24-806e6f6e6963}
\]
2009.08.27  15.23               451 phptest.php
               1 File(s)            451 bytes
               6 Dir(s)  28,746,731,520 bytes free

C:\mnt\test>php phptest.php
directory:              bool(true)
junction.exe junction:  bool(true)
mklink junction:        bool(true)
mounted volume:         bool(false)

Thanks for your work on this, unfortunately, my inability to keep track
of drive letters means I use a lot of mounted volumes...

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

[2009-08-27 09:50:22] paj...@php.net

And confirmed your last cases using Win7/Vista/2k8. In this case
junction are prepended with \??\.  Fix applied, the next snap should
have it.

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

[2009-08-27 09:39:02] s...@php.net

Automatic comment from SVN on behalf of pajoye
Revision: http://svn.php.net/viewvc/?view=revision&revision=287800
Log: - Fix for #48746, fix mounted volume and junctions when used from
vista or later, they are actually prepended with \??\

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

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/48746

-- 
Edit this bug report at http://bugs.php.net/?id=48746&edit=1

Reply via email to