Bug #53811 [Wfx]: filesize disregards case sensitive file system
| From: | jl_ewing at hotmail dot com | Date: | Sat, 22 Jan 2011 18:37:24 +0000 |
| Subject: | Bug #53811 [Wfx]: filesize disregards case sensitive file system | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-158087@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=53811&edit=1
ID: 53811
User updated by: jl_ewing at hotmail dot com
Reported by: jl_ewing at hotmail dot com
Summary: filesize disregards case sensitive file system
Status: Wont fix
Type: Bug
Package: Filesystem function related
Operating System: Windows XP
PHP Version: 5.3.5
Block user comment: N
Private report: N
New Comment:
I think you misunderstood. I was calling bull on the "highly
experimental" statement.
Microsoft fully supports the use the
HKLM\SYSTEM\CurrentControlSet\Control\Session
Manager\kernel\obcaseinsensitive registry key and case sensitivity in
the NTFS file system. In fact case sensitive file systems is a POSIX
requirement.
According to Microsoft:
"POSIX requires a certain amount of functionality from the file system,
such as the ability for a file to have more than one name (or hard
links) and case-sensitive file naming. Neither FAT nor HPFS supports
these features, which is another reason why a new file system was
required for Windows NT. NTFS supports both hard links and
case-sensitive naming. If you want to run in a POSIX-conforming
environment, you need at least one NTFS disk partition on your
computer."
I don't recall stating anything about "all possible functions" and
indeed a bulk of the applications (notepad, for example) and utilities
do not understand what it means to have case sensitivity enabled or how
that translates to the file system. Of course I wasn't asking
Microsoft to fix that, I was only asking for PHP to be able to support
what the underlying file system supports.
If there are, in fact, separate API calls required to support
reading/writing to case sensitive files then I understand the task and
respectfully withdraw my request at this time.
Previous Comments:
------------------------------------------------------------------------
[2011-01-22 18:22:22] pajoye@php.net
Yes, that's what I meant.
Your statement about MSFT fully supporting it with all possible
functions is
wrong, btw.
------------------------------------------------------------------------
[2011-01-22 18:12:17] jl_ewing at hotmail dot com
You mean case sensitive NTFS partition support is highly experimental?
I'm calling bull on that as the feature has been around since at least
2005 and Microsoft FULLY supports it and if you were to search TechNet
you would find many articles regarding the topic.
------------------------------------------------------------------------
[2011-01-22 13:16:28] pajoye@php.net
No, it should not. Case insensitive NTFS partition support is highly
experimental
and requires special cases and APIs calls. We aren't going to support
that any
time soon.
------------------------------------------------------------------------
[2011-01-22 06:19:02] jl_ewing at hotmail dot com
Description:
------------
Windows XP with NTFS and Case in-sensitivity is DISABLED (e.g. the file
system is case sensitive). PHP 5.3.5 is VC6 x86 Non Thread Safe ZIP
file extracted \PHP535 directory
HKLM\SYSTEM\CurrentControlSet\Control\Session
Manager\kernel\obcaseinsensitive 0
C:\opt\files>dir
Volume in drive C is Boot
Volume Serial Number is 84D1-331E
Directory of C:\opt\files
01/21/2011 11:03 PM <DIR> .
01/21/2011 11:03 PM <DIR> ..
01/21/2011 11:03 PM 3,400 testA.out
01/21/2011 11:03 PM 550 testa.out
2 File(s) 3,950 bytes
2 Dir(s) 65,225,863,168 bytes free
C:\PHP535>php -f test.php (see test script)
Array
(
[testA.out] => 550
[testa.out] => 550
)
The file that was created first seems to be the one that it uses. On
NTFS file systems that are case sensitive filesize should pick up the
appropriate file sizes
Test script:
---------------
$dir = '\\opt\\files';
$index = array();
$files = scandir($dir);
foreach ($files as $file) {
if (is_file($dir . '\\' . $file)) {
$sizeX = filesize($dir. "/$file");
$index[$file] = $sizeX;
unset ($file, $sizeX);
}
}
print_r($index);
Expected result:
----------------
Array
(
[testA.out] => 3400
[testa.out] => 550
)
Actual result:
--------------
Array
(
[testA.out] => 550
[testa.out] => 550
)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=53811&edit=1