Я пытаюсь заставить базовые функции PHP zip работать на сервере Windows безуспешно.
Даже следующий самый простой пример из раздела Zip-архив на PHP.net не работает:
<?php
$zip = new ZipArchive;
if ($zip->open('D:\rootfolder\path_to_files\test.zip') === TRUE) {
if($zip->addFile('D:\rootfolder\path_to_files\newfile.txt', 'newname2.txt')) {
echo 'worked like a charm';
} else {
echo 'Could not add the file';
}
$zip->close();
} else {
echo 'failed';
}
?>
В простом примере выше, если файл zip test.zip не существует, он будет отображать «сбой», однако, если он существует, он будет отображаться для меня «работал как шарм», независимо от того, существует файл для добавления (новый файл) или нет. Но хуже всего то, что это не создает почтовый индекс!
Я не думаю, что это связано с разрешением, так как я могу использовать FWRITE и другие файловые функции успешно.
Теперь я не вижу упоминания о сборке zip (‘—with-zip = / hsphere / etc) в разделе команд настройки на странице информации php, поэтому я не уверен на 100%, есть ли там расширения правильно, но вот более подробная информация о phpinfo ():
Сервер: Windows Server 2008 R2 Standard Edition с пакетом обновления 1
PHP: Версия 5.4.14
Почтовый индекс: включен и версия 1.11.0
zlib.output_compression: от
zlib.output_compression_level: -1
zlib.output_handler: неважно
Если вы хотите создать новый zip-файл и добавить в него ne-файлы, вы должны установить этот аргумент: ZipArchive::CREATE
Таким образом, Ваш пример будет следующим:
$zip = new ZipArchive;
if ($zip->open('C:\xampp\htdocs\StackOverflow\test.zip', ZipArchive::CREATE) === TRUE) {
if($zip->addFile('C:\xampp\htdocs\StackOverflow\newfile.txt', 'newname2.txt')) {
echo 'worked like a charm';
}else {
echo 'Could not add the file';
}
$zip->close();
}else {
echo 'failed';
}
Надеюсь, это поможет 🙂
Других решений пока нет …