注意:我在本地主机上,所以CHMOD'ing不是答案。
无论如何,我无法将从ZIP中提取的文件复制到目录中,文件被提取出来,但是它们不会被复制......文件只是放在{{{ 1}}是。我有这个:
upload.php
它输出11/11,所以这很好......但文件没有复制,原始文件也没有被删除。为什么不复制它们?
答案 0 :(得分:2)
问题在于您假设数组$ary
中包含文件名。但事实并非如此。
$ary
命令输出的 unzip
将类似于:
extracting: foo
extracting: bar
...
尝试使用var_dump($ary)
转储数组内容以确认这一点。
我的建议是不要使用外部unzip
命令,而是使用build in zip functions of PHP作为:
$zip = new ZipArchive;
if ($zip->open("$_FILES['file']['tmp_name']") === TRUE) {
$zip->extractTo('i/');
$zip->close();
} else {
// failed to extract.
}
答案 1 :(得分:0)
正如已经提到的codaddict,请尝试使用PECL zip模块或PEAR File_Archive。 但如果您无法安装任何这些,并坚持使用旧的PHP,请尝试:
exec('unzip ' . $_FILES['file']['tmp_name'] . ' | tail -n"+2" | cut -d" " -f4 ', $ary, $output);
那应该只给你文件名。
答案 2 :(得分:0)
由于您没有完全阅读本手册,因此不会复制文件:
$ dest - 目标路径。如果$ dest是一个URL,如果包装器不支持覆盖现有文件,则复制操作可能会失败。 警告:如果目标文件已存在,则会被覆盖。
您需要指定完整的目标路径(包括文件名),而不仅仅是目录。