Bug #50659 [Fbk->NoF]: Junctions over a share fail

From: Date: Sun, 24 Oct 2021 04:22:07 +0000
Subject: Bug #50659 [Fbk->NoF]: Junctions over a share fail
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-237341@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=50659&edit=1

 ID:               50659
 Updated by:       php-bugs@lists.php.net
 Reported by:      RQuadling at GMail dot com
 Summary:          Junctions over a share fail
-Status:           Feedback
+Status:           No Feedback
 Type:             Bug
 Package:          Directory function related
 Operating System: win32 only - Windows XP SP3
 PHP Version:      5.3SVN-2010-01-04 (snap)
 Assigned To:      cmb
 Private report:   N

 New Comment:

No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.


Previous Comments:
------------------------------------------------------------------------
[2021-10-15 11:30:34] cmb@php.net

> Essentially absolute paths are realpath()-able just fine, but
> relative paths are not.

This appears to have been resolved in the meantime, or do you
still experience this with any of the actively supported PHP
versions[1]?

BTW, the following part of the reproducer doesn't look right:

    MD J:\RAQ_Junc
    JUNCTION J:\RAQ_Junc C:\RAQ_Orig

I don't think it's possible to convert an existing folder to a
junction; I went without the MD.

[1] <https://www.php.net/supported-versions.php>

------------------------------------------------------------------------
[2010-01-04 17:55:48] RQuadling at GMail dot com

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 this bug report at https://bugs.php.net/bug.php?id=50659&edit=1


Thread (3 messages)

« previous php.bugs (#237341) next »