【发布时间】:2012-10-16 22:18:20
【问题描述】:
您好,我正在尝试创建一个新的 zip 文件,我已经重新编译了启用 ZIP 的 PHP,这是我的代码
if($_SERVER['REQUEST_METHOD'] == "POST"){
$zip = new ZipArchive;
if($zip->open("/home/user1joe/public_html/upload/test.zip",ZIPARCHIVE::CREATE)!= true) {
echo "error file did not up upload";
exit(0);
}
foreach ($_FILES["images"]["error"] as $key => $error)
if ($error == UPLOAD_ERR_OK) {
$temp_name = $_FILES["images"]["tmp_name"][$key];
$new_name = $_FILES['images']['name'][$key];
var_dump($temp_name);
var_dump($new_name);
if(file_exists($temp_name)){
$zip->addFile($temp_name,$new_name);
move_uploaded_file($temp_name, "upload/".$new_name);
} else
echo "error file does not exist";
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
}
$res = $zip->close();
var_dump($res);
}
$zip->close() 返回 false 并且没有创建 zip。
- 我没有遇到任何错误
- $zip->numFiles 显示存档中有文件
- 我要创建zip的文件夹有可写权限
我有点迷失了我可以测试的其他东西,任何想法都会很棒!
【问题讨论】:
-
存档前不应该有 move_uploaded 文件吗?
-
$zip->close()返回 false 表示无法保存 zip 文件。您可能没有足够的权限在您尝试的位置创建文件。 -
大家好,抱歉,这有点令人困惑。 move_upload 只是为了测试我确实有权在与我想要放置 zip 的位置相同的位置创建文件。文件存储在 $_FILES["images"]["tmp_name"][$key] 位置。
-
但 zip 文件可能与 move_uploaded_files 不在同一目录中。一个路径是相对的,另一个是绝对的
-
我仔细检查了一下,它们在同一个位置。我放弃了这个策略并使用了一个 shell 命令