php 上传 $_FILES[FileName]["tmp_name"] 唯一性
php uploads $_FILES[FileName]["tmp_name"] uniqueness
我找不到关于 $_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
中)。它是硬编码还是可以配置?
我意识到冲突只会在很短的时间内发生,因为文件应该只持续脚本的持续时间,但这些可能性并没有提供我所期望的安慰。
文件保证是唯一的。 PHP 在 Windows 上使用 GetTempFileName()
,在 Linux 上使用 mkstemp()
或 mktemp()
。
GetTempFileName()
生成格式为
XXXX 的文件名。 (这是你用 XAMPP 看到的)
mkstemp()
和 mktemp()
生成格式为
XXXXXX 的文件名。 (这是文档中的内容)
这些是不可配置的,它们是由系统的标准C库设置的。系统保证生成的文件名是唯一的。如果系统无法创建唯一的文件名,函数调用 returns 错误状态到 PHP 进而引发 E_WARNING
: "File upload error - unable to create a temporary file".
参考文献:
- PHP 5.6 来源:rfc1867.c, php_open_temporary_file.c
- mkstemp(), mktemp()
- GetTempFileName()
我找不到关于 $_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
中)。它是硬编码还是可以配置?
我意识到冲突只会在很短的时间内发生,因为文件应该只持续脚本的持续时间,但这些可能性并没有提供我所期望的安慰。
文件保证是唯一的。 PHP 在 Windows 上使用 GetTempFileName()
,在 Linux 上使用 mkstemp()
或 mktemp()
。
GetTempFileName()
生成格式为
XXXX 的文件名。 (这是你用 XAMPP 看到的)
mkstemp()
和mktemp()
生成格式为XXXXXX 的文件名。 (这是文档中的内容)这些是不可配置的,它们是由系统的标准C库设置的。系统保证生成的文件名是唯一的。如果系统无法创建唯一的文件名,函数调用 returns 错误状态到 PHP 进而引发
E_WARNING
: "File upload error - unable to create a temporary file".参考文献:
- PHP 5.6 来源:rfc1867.c, php_open_temporary_file.c
- mkstemp(), mktemp()
- GetTempFileName()