ID: 36290
Updated by: [email protected]
Reported By: info at silisoftware dot com
-Status: No Feedback
+Status: Closed
Bug Type: Filesystem function related
Operating System: Windows XP Pro SP2
PHP Version: 4.4.2
New Comment:
Fixed in 5.3.x
Previous Comments:
------------------------------------------------------------------------
[2006-06-23 11:47:11] hanskrentel at yahoo dot de
I just checked this out on PHP Version 5.1.2 and the behavior for me is
the same, so this was not fixed.
reproduced with:
$tempname = tempnam('', 'foo');
echo $tempname.'<br>';
echo realpath($tempname).'<br>';
output in my case:
\foo5E0.tmp
d:\foo5E0.tmp
d:\ is not my tempdir
anyway this function behaves inconsisten per default as discribben in
the current online documentaion:
>>Creates a file with a unique filename in the specified directory. If
the directory does not exist, tempnam() may generate a file in the
system's temporary directory, and return the name of that.<<
http://www.php.net/manual/en/function.tempnam.php
so the behavior is correct per definition but useless and i guess not
intended.
------------------------------------------------------------------------
[2006-02-13 01:00:04] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2006-02-05 10:31:29] [email protected]
Please try using this CVS snapshot:
http://snaps.php.net/php5.1-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.1-win32-latest.zip
------------------------------------------------------------------------
[2006-02-05 02:19:00] info at silisoftware dot com
Description:
------------
tempnam() returns a temp filename, and creates the file. However, it
creates it on the wrong drive. For example:
$tempname = tempnam('', 'foo');
echo $tempname.'<br>';
echo realpath($tempname).'<br>';
This outputs:
\foo49.tmp
e:\foo49.tmp
Notice the returned filename has no drive letter. The file is created
(to prevent race condition) in C:\ but realpath() resolves that to E:\
(the last drive letter of physical harddrives in this system).
For reference:
getenv('TMP') == 'C:\WINDOWS\TEMP'
getenv('TMPDIR') == ''
Reproduce code:
---------------
$tempname = tempnam('', 'foo');
echo $tempname.'<br>';
echo realpath($tempname).'<br>';
Expected result:
----------------
c:\foo49.tmp
c:\foo49.tmp
Actual result:
--------------
\foo49.tmp
e:\foo49.tmp
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=36290&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.