2014-11-03 2 views
2

Я пытаюсь заставить базовые функции PHP zip работать на сервере Windows без каких-либо успехов.
Даже следующие наиболее простой пример из архива раздела Zip на PHP.net не работает:Функции PHP Zip(), не работающие на сервере Windows

<?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'; 
} 
?> 

В простом примере выше, если почтовый файл test.zip не существует, его будет echo 'failed', однако, если он действительно существует, он будет эхом для меня «работал как шарм» независимо от того, существует ли файл для добавления (новый файл) или нет. Но хуже всего то, что он не создает zip !!

Я не думаю, что это связано с разрешением, так как я могу использовать fwrite и другие функции файла успешно.

Теперь я не вижу упоминания о zip-сборке ('--with-zip =/hsphere/etc) в разделе команды configure на странице info php, поэтому я не уверен на 100%, если расширения там правильно, но вот некоторые более подробная информация от phpinfo():

Сервер: Server R2 Standard Edition службы Windows 2008 с пакетом обновления 1
PHP: Версия 5.4.14
Zip: является и версия 1.11.0
zlib.output_compression: Выкл.
zlib.output_compression_level: -1
zlib.output_handler: нет значения

ответ

0

Если вы хотите создать новый почтовый файл и добавить к нему пе файлы, вы должны установить этот аргумент: 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'; 
} 

Надежда, что помогает :)

+0

Это работало! Большое спасибо. Его интересный, хотя PHP.net не упоминает его как требование в примере, который они дают по адресу: http://us2.php.net/manual/en/ziparchive.addfile.php , а также это необязательно по какой-то причине на сервере linux, на котором я тестировал, только на сервере Windows. Но еще раз спасибо, он работает сейчас. –

Смежные вопросы