Edit report at https://bugs.php.net/bug.php?id=61909&edit=1
ID: 61909
Comment by: david at panmedia dot co dot nz
Reported by: david at panmedia dot co dot nz
Summary: PHP realpath on Windows Case Issue
Status: Open
Type: Bug
Package: Filesystem function related
Operating System: Windows Vista/7
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
On further investigation I have noticed that on Windows symlinks are only
followed 1 level deep:
// F:\>mkdir link-target
// F:\>mklink /D link f:\link-target
// F:\>mklink /D link2 f:\link
$dir = realpath('f:\link2');
var_dump($dir);
$dir = realpath($dir);
var_dump($dir);
$dir = realpath($dir);
var_dump($dir);
// string 'f:\link' (length=7)
// string 'f:\link-target' (length=14)
// string 'F:\link-target' (length=14)
Previous Comments:
------------------------------------------------------------------------
[2012-05-02 17:37:52] david at panmedia dot co dot nz
Description:
------------
I have a symlink on my Windows server which was made like this:
F:\>mkdir link-target
F:\>mklink /D link f:\link-target
(Note the lower case f: in the symlink target)
In PHP I run this:
$dir = realpath('f:\link');
var_dump($dir);
$dir = realpath($dir);
var_dump($dir);
Which outputs:
string 'f:\link-target' (length=14)
string 'F:\link-target' (length=14)
Notice the change in case on the second realpath.
The expected output is:
string 'F:\link-target' (length=14)
string 'F:\link-target' (length=14)
Test script:
---------------
<?php
// F:\>mkdir link-target
// F:\>mklink /D link f:\link-target
$dir = realpath('f:\link');
var_dump($dir);
$dir = realpath($dir);
var_dump($dir);
Expected result:
----------------
string 'F:\link-target' (length=14)
string 'F:\link-target' (length=14)
Actual result:
--------------
string 'f:\link-target' (length=14)
string 'F:\link-target' (length=14)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=61909&edit=1