I can't find specific information as to the uniqueness of $_FILES["FileName"]["tmp_name"]
.
From: http://php.net/manual/en/reserved.variables.files.php I see that 6 hex characters are what make the file name unique. eg /tmp/php/php6hst32
From local testing ( XAMPP | WIN 7 ) I see only 4 hex characters eg \\tmp\\phpCC07.tmp
This would suggest a min uniqueness of 1
in 65536
which doesn't seem that unique to me.
Where is this set within PHP? (it's not in php.ini
). Is it hard coded or can it be configured?
I realise that a clash could only happen within a brief period since the file should last only the duration of the script but these odds don't offer the comfort I was expecting.
The files are guaranteed to be unique. PHP uses GetTempFileName()
on Windows and mkstemp()
or mktemp()
on Linux.
GetTempFileName()
produces filenames of the format <prefix>XXXX. (This is what you see with XAMPP)
mkstemp()
and mktemp()
produce filenames of the format <prefix>XXXXXX. (This is what was in the docs)
These are not configurable, they are set by the system's standard C library. The system guarantees that the filenames that are generated are unique. If the system is unable to create a unique filename, the function call returns an error status to PHP which in turn raises an E_WARNING
: "File upload error - unable to create a temporary file".
References:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.