使用流包装器在zip存档中创建文件

时间:2009-11-13 19:24:28

标签: php zip

我想在PHP中使用zip流包装器来创建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 个答案:

答案 0 :(得分:1)

zip://流包装器不支持写入:http://php.net/manual/en/wrappers.compression.php

此外,由于CRC位于压缩数据

之前,因此无法在流中写入Zip存档

答案 1 :(得分:0)

嘿,你厌倦了将你的文件夹chmod到ZIP文件所在的777?

编辑:看起来您的文件不是777和您的文件夹。我错了,只是醒了。 chmod 777文件夹本身,如果不起作用,请告诉我。