Edit report at https://bugs.php.net/bug.php?id=55832&edit=1

 ID:                 55832
 Updated by:         paj...@php.net
 Reported by:        christian dot koncilia at gmx dot net
 Summary:            is_file() returns true if file does NOT exist
 Status:             Bogus
 Type:               Bug
 Package:            Filesystem function related
 Operating System:   Windows 7
 PHP Version:        5.3.8
 Block user comment: N
 Private report:     N

 New Comment:

This is a wrong explanation.

It is by no mean due to the Win32 API idiosyncrasy but the usage of 
FindFirstFile. Its behavior is clearly documented (http://msdn.microsoft.com/en-
us/library/windows/desktop/aa364418(v=vs.85).aspx) and we should actually stop 
to use it in realpath and related functions.

By doing so we also have to do the case conversion manually as well (btw, 
amazing that we have to do that for the case insensitive filesystem ;).

However, I keep this bug as bogus as we already have a feature request to solve 
this problem.


Previous Comments:
------------------------------------------------------------------------
[2011-10-04 10:55:37] cataphr...@php.net

Expected behavior. See DOS device names. This is an idiosyncrasy of the windows 
API.

------------------------------------------------------------------------
[2011-10-02 14:12:01] christian dot koncilia at gmx dot net

Description:
------------
Using Windows 7, create a directory "C:\dirtest\Au". Run the test script. 
Output produced is: 

bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)

although neither $file1 nor $file2 exist! Expected output would be 
"bool(false)" in all cases.

Test script:
---------------
<?php
$file1 = 'C:\dirtest\Au\aux.gtb';
$file2 = 'C:\dirtest\Au\bux.gtb';

var_dump(is_file($file1));
var_dump(file_exists($file1));
var_dump(is_readable($file1));

var_dump(is_file($file2));
var_dump(file_exists($file2));
var_dump(is_readable($file2));

Expected result:
----------------
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)

Actual result:
--------------
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=55832&edit=1

Reply via email to