Я не могу найти конкретную информацию относительно уникальности $_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 использует GetTempFileName()
на Windows и mkstemp()
или же mktemp()
в линуксе
GetTempFileName()
производит имена файлов в формате <префикс>XXXX. (Это то, что вы видите с XAMPP)
mkstemp()
а также mktemp()
производить имена файлов в формате <префикс>XXXXXX. (Это то, что было в документах)
Они не настраиваются, они устанавливаются стандартной C-библиотекой системы. Система гарантирует, что генерируемые имена файлов являются уникальными. Если система не может создать уникальное имя файла, вызов функции возвращает статус ошибки в PHP, что, в свою очередь, вызывает E_WARNING
: «Ошибка загрузки файла — невозможно создать временный файл».
Рекомендации:
Других решений пока нет …