В прошлом я использовал uniqid () для генерации уникального имени файла, но на самом деле не создавал файл.
$filename = uniqid(rand(), true) . '.pdf';
Первый параметр может быть любым, но я использовал rand (), чтобы сделать его еще более случайным. Используя префикс set, вы можете избежать конфликтов с другими временными файлами в системе.
$filename = uniqid('MyApp', true) . '.pdf';
Оттуда вы просто создаете файл. Если ничего не помогает, поместите его в цикл while и продолжайте его генерировать, пока не получите тот, который работает.
while (true) {
$filename = uniqid('MyApp', true) . '.pdf';
if (!file_exists(sys_get_temp_dir() . $filename)) break;
}