ID:               48746
 Updated by:       paj...@php.net
 Reported By:      ddkees at illinois dot edu
-Status:           Assigned
+Status:           Feedback
 Bug Type:         Directory function related
 Operating System: win32 only - Windows Server 2003
 PHP Version:      5.3.0
 Assigned To:      pajoye
 New Comment:

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


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

[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 \??\

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

[2009-08-27 09:24:03] paj...@php.net

To do not miss a case again, can you please tell me how you create each
mounted volume or junction? If mnt is a mounted volume or not, etc.

Junction created with junction.exe works fine here on xp, 2k3, win7,
vista and 2k8, using normal parent directories (mounted volume or not).

For example (XP):
c:\mnt mounted volume (HDD)
c:\mnt\directory (mkdir directory)
c:\mnt\junction_abs (created with junction junction c:\mnt\directory)
c:\mnt\junction (created with junction junction directory from c:\mnt)

Using this script from c:\mnt\test (c:\mnt being a mounted volume):
<?php
var_dump(file_exists('directory'));
var_dump(file_exists('junction_abs'));
var_dump(file_exists('junction'));

C:\mnt\test>\php-sdk\snap_5_2\vc6\x86\php52\Debug\php.exe t.php
bool(true)
bool(true)
bool(true)





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

[2009-08-27 08:42:54] paj...@php.net

 "\??\"  may be the cause (\\?\ is well documented not \??\). But I
wonder why junction.exe jucntion work just fine on our tests system (xp
and 2k3). Thanks for testing, I go back to code&test.

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

[2009-08-27 03:40:39] phpstuff at cresstone dot com

>From my testing, this snapshot works for directory junction points
created with mklink. However still no go on mounted volumes or directory
junction points created with junction.exe.

Re-creating any faulting junctions with mklink seems like a good
workaround, but mounted volumes are still left in the cold.

Looking at the output of the dir command, the only visible difference
between mklink and junction.exe is the prepended "\??\", which is also
present on mounted volumes by necessity. 

Full test log follows:

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

 Directory of C:\mnt\test

2009.08.26  23.32    <DIR>          .
2009.08.26  23.32    <DIR>          ..
2009.08.11  16.35    <DIR>          directory
2009.08.11  14.47    <JUNCTION>     junction
[\??\C:\mnt\test\directory]
2009.08.20  13.26    <JUNCTION>     mklink_junction
[C:\mnt\test\directory]
2009.08.26  23.26    <JUNCTION>     mounted_volume
[\??\Volume{e13ba66a-14db-11de-8e96-001fd0ae05ac}
\]
2009.08.26  23.32               283 phptest.php
               1 File(s)            283 bytes
               6 Dir(s)  28,765,544,448 bytes free

C:\mnt\test>php -v
PHP 5.3.1-dev (cli) (built: Aug 27 2009 03:52:14)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

C:\mnt\test>type phptest.php
<?php
echo "directory:\t\t"; var_dump(file_exists("directory"));
echo "junction.exe junction:\t"; var_dump(file_exists("junction"));
echo "mklink junction:\t";  var_dump(file_exists("mklink_junction"));
echo "mounted volume:\t\t"; var_dump(file_exists("mounted_volume"));


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

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

[2009-08-26 20:46:13] paj...@php.net

Please try using this snapshot:

  http://snaps.php.net/php5.3-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/



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

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