我有一个问题关于使用PHP提取zip文件 我在网上尝试了很多共享脚本 但它仍然不起作用 我尝试的最后一个脚本是这个脚本:
<?php
$zip = new ZipArchive;
$res = $zip->open('data.zip');
if ($res === TRUE) {
$zip->extractTo('/extract/');
$zip->close();
echo 'woot!';
} else {
echo 'doh!';
}
?>
脚本运行时我总是得到else条件,
我已尝试将data.zip
和/extract/
路径替换为完整路径http://localhost/basedata/data.zip
和http://localhost/basedata/extract/
,但我还有其他条件,任何人都可以帮助我吗?
这是我的整个脚本和zip文件 http://www.mediafire.com/?c49c3xdxjlm58ey
答案 0 :(得分:1)
您应该检查哪个错误代码打开(http://www.php.net/manual/en/ziparchive.open.php),这会给您一些帮助。
错误代码是这样的:
ZIPARCHIVE::ER_EXISTS -10
ZIPARCHIVE::ER_INCONS - 21
ZIPARCHIVE::ER_INVAL - 18
ZIPARCHIVE::ER_MEMORY - 14
ZIPARCHIVE::ER_NOENT - 9
ZIPARCHIVE::ER_NOZIP - 19
ZIPARCHIVE::ER_OPEN - 11
ZIPARCHIVE::ER_READ - 5
ZIPARCHIVE::ER_SEEK - 4
答案 1 :(得分:0)
ZipArchive使用文件路径,而不是URL。
例如,如果您的Web服务器的文档根目录是/srv/www
,请指定/srv/www/basedata/data.zip
(或文件在服务器的本地文件系统上的任何位置), not {{1 }}
如果.ZIP文件位于远程计算机上,请在解压缩之前将脚本更改为先下载,但这似乎不是您的情况。
此外,PHP脚本作为运行的用户需要具有Zip文件的读取权限以及对提取文件的目标的写入权限。
答案 2 :(得分:0)
您正在声明$zip
(ziparchive)错误
<?php
$zip = new ZipArchive;
缺少括号
<?php
$zip = new ZipArchive();
if ($zip->open('data.zip')) {