#26210 [Bgs]: CON, NUL, PRN... special files : is_file return true
| From: | iubito at asp-php dot net | Date: | Wed, 12 Nov 2003 09:55:19 +0000 |
| Subject: | #26210 [Bgs]: CON, NUL, PRN... special files : is_file return true | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-50254@lists.php.net to get a copy of this message | ||
ID: 26210
User updated by: iubito at asp-php dot net
Reported By: iubito at asp-php dot net
Status: Bogus
Bug Type: *Directory/Filesystem functions
Operating System: Windows (all)
PHP Version: 4.3.3
New Comment:
Sorry but the problem is serious, and I've found in the doc (just now,
didn't found it before :p) filetype...
...BUT that doesn't solve the problem. If only I could test if my files
are "file" type!
with filetype($a_file_name)
c:/ -> dir
brass.mus -> file
file_that_not_exist.foobar ->
aux.* -> file
nul.* -> file
com1.* -> file
Is filetype() function correct ???
Previous Comments:
------------------------------------------------------------------------
[2003-11-12 04:12:13] edink@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
.
------------------------------------------------------------------------
[2003-11-12 00:18:04] iubito at asp-php dot net
Description:
------------
Hello
As we often forget that Windows is based on DOS... we forget that in
DOS it exists special file (CON, NUL, PRN, LPT1, LPT2, AUX, COM1, COM2,
COM3, COM4). Under DOS, echo foobar > nul
nul is considered as a file.
Now in Windows Explorer, if you try to create a file called
aux.<the_extension_you_want> or nul.bmp or prn.zip or lpt2.php...
Windows return an error, something like "Impossible to create nul.bmp,
a file with this name already exists..."
That shows us that windows consider aux.* nul.* con.* as files.
Now here I want to go...
All functions like is_directory, is_file, file_exists... should return
false.
Since today, it ask windows "does the file nul.bmp exist ?" and Windows
answer "yes!".
But this file is not openable, writeable, readable.
Reproduce code:
---------------
<?
$bugfile = 'c:/nul.gif'; // or aux.* or con.*....
if (is_file($bugfile))
echo $bugfile.' exists! <img src="'.$bugfile.'" />';
else
echo $bugfile.' doesn\'t exist!';
// Now is a more problematic case I've seen in my app
$inc = 'aux.php'; // the name is generated automatically...
if (is_file('mydirectory/'.$inc)) {
include('mydirectory/'.$inc);
}
?>
Expected result:
----------------
c:/nul.gif doesn't exist!
Actual result:
--------------
c:/nul.gif exists <img src="c:/nul.gif" /> <-- that's a red cross!
Warning: main(PHPmyBrowserCustom/addon-file/AUX.php): failed to open
stream: No such file or directory in
F:\www\pays\flags\PHPmyBrowser\main.php on line 587
Fatal error: main(): Failed opening required
'PHPmyBrowserCustom/addon-file/AUX.php' (include_path='.;c:\php4\pear')
in F:\www\pays\flags\PHPmyBrowser\main.php on line 587
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=26210&edit=1