Создайте файл в zip-архиве, используя потоковую оболочку - PullRequest
1 голос
/ 13 ноября 2009

Я хочу использовать оболочку zip stream в PHP для создания zip файла или добавления файлов в zip архив. Вот мой пример:

<?php
echo file_get_contents('zip://file.zip#existing_file.txt');
file_put_contents('zip://file.zip#new_file.txt', 'Trying to put some stuff here...');
echo file_get_contents('zip://file.zip#new_file.txt');

Этот код возвращает мне этот вывод:

$ php test.php 
Hey, I'm an existing text in a file in a zip archive !

Warning: file_put_contents(zip://file.zip#new_file.txt): failed to open stream: operation failed in /home/sylvain/test.php on line 7

Warning: file_get_contents(zip://file.zip#new_file.txt): failed to open stream: operation failed in /home/sylvain/test.php on line 9

Я получаю ту же ошибку, когда zip-файл просто не существует.

Вот права доступа к файлу:

$ ls -la
total 24
drwxrwxrwx   2 sylvain sylvain  4096 2009-11-13 14:44 .
drwxr-xr-x 134 sylvain sylvain 12288 2009-11-13 14:44 ..
-rwxrwxrwx   1 sylvain sylvain   236 2009-11-13 14:44 file.zip
-rwxrwxrwx   1 sylvain sylvain   268 2009-11-13 14:44 test.php

Можно ли сделать то, что я пытаюсь сделать, без создания новой потоковой оболочки?

Ответы [ 2 ]

2 голосов
/ 10 августа 2012

zip:// обертка потока не поддерживает записи: http://php.net/manual/en/wrappers.compression.php

Кроме того, Zip-архивы нельзя записать в поток, потому что CRC предшествует сжатым данным

0 голосов
/ 13 ноября 2009

Эй, вы устали chmod для вашей папки 777, в которой находится ZIP-файл?

Редактировать: похоже, что ваши файлы не 777 и ваша папка. Я могу ошибаться, только что проснулся. chmod 777 сама папка и дайте мне знать, если это не сработает.

...