Bug #72317 [Com]: tempnam fails with prefix "php"
| From: | flip101 at gmail dot com | Date: | Mon, 06 Jun 2016 11:25:35 +0000 |
| Subject: | Bug #72317 [Com]: tempnam fails with prefix "php" | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-201472@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=72317&edit=1
ID: 72317
Comment by: flip101 at gmail dot com
Reported by: flip101 at gmail dot com
Summary: tempnam fails with prefix "php"
Status: Feedback
Type: Bug
Package: *Directory/Filesystem functions
Operating System: Windows 10 64 bits
PHP Version: 5.6.20
Block user comment: N
Private report: N
New Comment:
Hi ab, i captured the output of Sysinternals Process Monitor. I noticed that when trying to generate
a file the file already exist (i went into the directory and indeed the file is there). I have
65.535 files which look like php####.tmp where #### can be 1 to 4 characters and seem to be counting
up. However all these files were created on the day that i reported this issue. What i think
happened is that i had the tempnamp() in a while loop (which had a wrong stop condition) and assumed
php would delete the file if i don't use it (because i thought the file was temporary because
of the function name). When i was getting errors there i started making the test case which of
course failed as well.
Let me know if you want to have the output of Process Monitor, or @cmb if you want to test this with
a different php version. But i think the issue is resolved at this point.
Previous Comments:
------------------------------------------------------------------------
[2016-06-06 07:44:17] ab@php.net
Thanks for the report. Can't reproduce as well. Also it's unlikely an issue with exactly
x64 PHP5, as the I/O layer is same.
@flip101 does the same happen when using a dir different from temp? For one, could you please post
the relevant part of the procmon output when running into this issue? The Process Monitor is
fetcheable from sysinternals.com.
Thanks.
------------------------------------------------------------------------
[2016-06-03 15:12:04] cmb@php.net
> My exact php version is this one: php-5.6.20-Win32-VC11-x64.zip
Running your latest test script on this very version:
bool(true)
bool(true)
string(31) "C:\Users\cmb\AppData\Local\Temp"
string(43) "C:\Users\cmb\AppData\Local\Temp\phpB8D1.tmp"
string(43) "C:\Users\cmb\AppData\Local\Temp\aaaB8E2.tmp"
So, I still can't reproduce the issue. Anyhow, note[1]:
| The x64 builds of PHP 5 for Windows are experimental,
I suggest you try with an x86 build of PHP 5.6.22.
[1] <http://windows.php.net/download/>
------------------------------------------------------------------------
[2016-06-03 13:57:27] flip101 at gmail dot com
Forgot to change the username in my output, but it's the same user ..
------------------------------------------------------------------------
[2016-06-03 13:20:44] flip101 at gmail dot com
I double check error reporting it's on E_ALL both in my php.ini (and i double check that i was
viewing the right php.ini by checking which one was loaded) and also i put error_reporting(E_ALL);
at the top (new script at the bottom of this comment). I don't see any warnings or notices,
exact output at bottom of comment. My exact php version is this one: php-5.6.20-Win32-VC11-x64.zip
==== Script
<?php
error_reporting(E_ALL);
var_dump(
file_exists(sys_get_temp_dir()),
is_writable(sys_get_temp_dir()),
sys_get_temp_dir(),
tempnam(sys_get_temp_dir(), 'php'),
tempnam(sys_get_temp_dir(), 'aaa')
);
==== End script
==== Console
C:\dev>php test.php
bool(true)
bool(true)
string(34) "C:\Users\plagas\AppData\Local\Temp"
bool(false)
string(46) "C:\Users\plagas\AppData\Local\Temp\aaaE26E.tmp"
==== End Console
------------------------------------------------------------------------
[2016-06-03 12:21:38] cmb@php.net
I can't reproduce this issue, neither on Windows 10 x64 with
PHP 5.6.22 VC11 x64 Non Thread Safe (2016-May-26 18:22:21), nor on
3v4l.org, see <https://3v4l.org/Wig5o>.
Please make sure that you have error_reporting=-E_ALL, and double-
check that there are no warnings or notices reported.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=72317
--
Edit this bug report at https://bugs.php.net/bug.php?id=72317&edit=1