php上传$ _FILES [FileName] [“tmp_name”]唯一性

时间:2015-03-25 08:17:08

标签: php file upload location temporary

我无法找到有关$_FILES["FileName"]["tmp_name"]的唯一性的具体信息。

来自:http://php.net/manual/en/reserved.variables.files.php 我看到6个十六进制字符是文件名唯一的原因。 例如/tmp/php/php6hst32

从本地测试( XAMPP | WIN 7 )我只看到4个十六进制字符 例如\tmp\phpCC07.tmp

这会建议165536的最小唯一性,这对我来说并不是唯一的。

这在PHP中设置在哪里? (它不在php.ini)。它是硬编码还是可以配置?

我意识到冲突只能在短时间内发生,因为文件应该只持续剧本的持续时间,但这些可能性并不能提供我所期待的舒适度。

1 个答案:

答案 0 :(得分:2)

保证文件是唯一的。 PHP在Windows上使用GetTempFileName(),在Linux上使用mkstemp()mktemp()

GetTempFileName()生成格式为< prefix> XXXX的文件名。 (这是你在XAMPP上看到的)

mkstemp()mktemp()生成格式为< prefix> XXXXXX的文件名。 (这就是文档中的内容)

这些不可配置,它们由系统的标准C库设置。系统保证生成的文件名是唯一的。如果系统无法创建唯一的文件名,则函数调用会向PHP返回错误状态,从而引发E_WARNING:&#34;文件上载错误 - 无法创建临时文件&#34;。< / p>

参考文献: