Edit report at https://bugs.php.net/bug.php?id=67220&edit=1
ID: 67220
Updated by: rasmus@php.net
Reported by: nicolas dot grekas+php at gmail dot com
Summary: realpath() on MacOSX doesn't normalize the case of
characters
Status: Not a bug
Type: Bug
Package: Filesystem function related
Operating System: MacOSX/Darwin
PHP Version: 5.5.12
Block user comment: N
Private report: N
New Comment:
Well, I am still somewhat sympathetic to this though. The native OSX realpath() call does normalize
the case. eg.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
printf("%s
%s\n",realpath("/Users",NULL),realpath("/users",NULL));
return(0);
}
Outputs: /Users /Users
And we used to do so as well when we relied on the system-level realpath() call. However, after we
optimized realpath() to allow us to do intra-path caching, we now use our own implementation.
Fixing this particular issue isn't that easy, and you are right, we don't promise to do
path normalization in this function.
Previous Comments:
------------------------------------------------------------------------
[2014-05-07 14:58:50] levim@php.net
Almost certainly this is because HFS+ is case-sensitive by default. Currently realpath "expands
all symbolic links and resolves references to '/./', '/../' and extra
'/' characters in the input path and returns the canonicalized absolute pathname".
Nowhere does that indicate anything about case sensitivity.
------------------------------------------------------------------------
[2014-05-06 15:24:24] nicolas dot grekas+php at gmail dot com
Description:
------------
See test script.
__FILE__, __DIR__, ReflectionClass::getFilename(), etc. are also affected (but getcwd() is OK).
Test script:
---------------
<?php
var_dump(realpath('/Users') === realpath('/users'));
Expected result:
----------------
bool(true)
Actual result:
--------------
bool(false)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=67220&edit=1