Предупреждение: ZipArchive::close(): Не удалось создать временный файл. :
Неизвестная ошибка в
myfile.php в
строке 132
У меня есть этот PHP-код, взятый непосредственно из https://stackoverflow.com/a/4914807/2028935, но я вставил выход(), чтобы убедиться в обнаружении ошибки:
Код: Выделить всё
// Get real path for our folder
$rootPath = realpath("/myfolder/pathX");
// Initialize archive object
$zip = new ZipArchive();
$zip->open("/myfolder/myfile.zip", ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file) {
// Skip directories (they would be added automatically)
if (!$file->isDir()) {
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
// Add current file to archive
$zip->addFile($filePath, $relativePath);
}
}
// Zip archive will be created only after closing object
if(!$zip->close()) {
exit();
}
У меня нет проблем с правами доступа к папке или файлу, поскольку папка и файлы удаляются (другой код), но я не могу понять, что такое Неизвестная ошибка в ZIP?
Я использую PHP 7.4 в Windows Сервер.
### UPDATE ###
Похоже, неизвестная ошибка связана с путем к ZIP-файлу. слишком долго, но я не понимаю почему. Если путь в $zip->open("/myfolder/myfile.zip", ZipArchive::CREATE | ZipArchive::OVERWRITE); длиннее или равен 250 символам, тогда возникает эта ошибка!?
Я мог бы понять, будет ли ограничение в 256 или 260 символов, поскольку я вижу, что там могут быть некоторые ограничения, но почему 250?
В настоящее время я изучаю, могу ли я уменьшить длину пути, выполнив сопоставление локального диска/папки с помощью команды DOS SUBST или через реестр HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet. \Control\Session Manager\Устройства DOS
Подробнее здесь: https://stackoverflow.com/questions/698 ... nown-error