#50659 [NEW]: Junctions over a share fail
| From: | RQuadling at GMail dot com | Date: | Mon, 04 Jan 2010 17:55:49 +0000 |
| Subject: | #50659 [NEW]: Junctions over a share fail | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-146327@lists.php.net to get a copy of this message | ||
From: RQuadling at GMail dot com
Operating system: Windows XP SP3
PHP version: 5.3SVN-2010-01-04 (snap)
PHP Bug Type: Directory function related
Bug description: Junctions over a share fail
Description:
------------
realpath() returns false for files inside junctions inside a share
accessed using a relative path.
Ok. I _did_ say this was an edge case.
The code below is an batch script utilising Windows NET SHARE and NET
MAP commands to create a drive J: mapped to C:\RAQ_Share and the
JUNCTION program from System Internals to create a junction in that
share.
The last few lines relate specifically to PHP.
Essentially absolute paths are realpath()-able just fine, but relative
paths are not.
Reproduce code:
---------------
@ECHO OFF
ECHO Create Original directory and file.
MD C:\RAQ_Orig
ECHO This is the file. > C:\RAQ_Orig\File.txt
ECHO.
ECHO Create share
MD C:\RAQ_Share
NET SHARE RAQ_Shared=C:\RAQ_Share /UNLIMITED
ECHO.
ECHO Map share
@NET USE J: /D > NUL
NET USE J: \\%COMPUTERNAME%\RAQ_Shared
ECHO.
ECHO Create junction
MD J:\RAQ_Junc
JUNCTION J:\RAQ_Junc C:\RAQ_Orig
ECHO.
ECHO Show the folders.
DIR \RAQ*
ECHO.
ECHO See contents of junction
DIR J:\RAQ_Junc\File.txt
ECHO.
ECHO Use PHP to report realpaths
PHP -v
PHP -n -r "var_dump(realpath('J:/RAQ_Junc/File.txt'));"
CD /D J:\
PHP -n -r "var_dump(realpath('/RAQ_Junc/File.txt'));"
CD \RAQ_Junc
PHP -n -r "var_dump(realpath('./File.txt'));"
Expected result:
----------------
Create Original directory and file.
Create share
RAQ_Shared was shared successfully.
Drop and map share
J: was deleted successfully.
The command completed successfully.
Create junction
Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals - http://www.sysinternals.com
Created: J:\RAQ_Junc
Targetted at: C:\RAQ_Orig
Show the folders.
Volume in drive C has no label.
Volume Serial Number is 1044-5992
Directory of C:\
2010/01/04 17:47 <DIR> RAQ_Orig
2010/01/04 17:47 <DIR> RAQ_Share
0 File(s) 0 bytes
2 Dir(s) 11,663,155,200 bytes free
See contents of junction
Volume in drive J has no label.
Volume Serial Number is 1044-5992
Directory of J:\RAQ_Junc
2010/01/04 17:47 20 File.txt
1 File(s) 20 bytes
0 Dir(s) 11,663,155,200 bytes free
Use PHP to report realpaths
PHP 5.3.3-dev (cli) (built: Jan 4 2010 12:59:42)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
string(20) "C:\RAQ_Orig\File.txt"
string(20) "C:\RAQ_Orig\File.txt"
string(20) "C:\RAQ_Orig\File.txt"
Actual result:
--------------
Create Original directory and file.
Create share
RAQ_Shared was shared successfully.
Drop and map share
J: was deleted successfully.
The command completed successfully.
Create junction
Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals - http://www.sysinternals.com
Created: J:\RAQ_Junc
Targetted at: C:\RAQ_Orig
Show the folders.
Volume in drive C has no label.
Volume Serial Number is 1044-5992
Directory of C:\
2010/01/04 17:47 <DIR> RAQ_Orig
2010/01/04 17:47 <DIR> RAQ_Share
0 File(s) 0 bytes
2 Dir(s) 11,663,155,200 bytes free
See contents of junction
Volume in drive J has no label.
Volume Serial Number is 1044-5992
Directory of J:\RAQ_Junc
2010/01/04 17:47 20 File.txt
1 File(s) 20 bytes
0 Dir(s) 11,663,155,200 bytes free
Use PHP to report realpaths
PHP 5.3.3-dev (cli) (built: Jan 4 2010 12:59:42)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
string(20) "C:\RAQ_Orig\File.txt"
string(20) "C:\RAQ_Orig\File.txt"
bool(false)
--
Edit bug report at http://bugs.php.net/?id=50659&edit=1
--
Try a snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=50659&r=trysnapshot52
Try a snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=50659&r=trysnapshot53
Try a snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=50659&r=trysnapshot60
Fixed in SVN: http://bugs.php.net/fix.php?id=50659&r=fixed
Fixed in SVN and need be documented: http://bugs.php.net/fix.php?id=50659&r=needdocs
Fixed in release: http://bugs.php.net/fix.php?id=50659&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=50659&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=50659&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=50659&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=50659&r=support
Expected behavior: http://bugs.php.net/fix.php?id=50659&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=50659&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=50659&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=50659&r=globals
PHP 4 support discontinued: http://bugs.php.net/fix.php?id=50659&r=php4
Daylight Savings: http://bugs.php.net/fix.php?id=50659&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=50659&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=50659&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=50659&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=50659&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=50659&r=mysqlcfg