我无法找到有关$_FILES["FileName"]["tmp_name"]
的唯一性的具体信息。
来自:http://php.net/manual/en/reserved.variables.files.php
我看到6个十六进制字符是文件名唯一的原因。
例如/tmp/php/php6hst32
从本地测试( XAMPP | WIN 7 )我只看到4个十六进制字符
例如\tmp\phpCC07.tmp
这会建议1
中65536
的最小唯一性,这对我来说并不是唯一的。
这在PHP中设置在哪里? (它不在php.ini
)。它是硬编码还是可以配置?
我意识到冲突只能在短时间内发生,因为文件应该只持续剧本的持续时间,但这些可能性并不能提供我所期待的舒适度。
答案 0 :(得分:2)
保证文件是唯一的。 PHP在Windows上使用GetTempFileName()
,在Linux上使用mkstemp()
或mktemp()
。
GetTempFileName()
生成格式为< prefix> XXXX的文件名。 (这是你在XAMPP上看到的)
mkstemp()
和mktemp()
生成格式为< prefix> XXXXXX的文件名。 (这就是文档中的内容)
这些不可配置,它们由系统的标准C库设置。系统保证生成的文件名是唯一的。如果系统无法创建唯一的文件名,则函数调用会向PHP返回错误状态,从而引发E_WARNING
:&#34;文件上载错误 - 无法创建临时文件&#34;。< / p>
参考文献: