2

こんにちは、新しい zip ファイルを作成しようとしています。PHP を再コンパイルして ZIP を有効にしました。これが私のコードです。

        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 を作成するフォルダーに書き込み権限がある

他に何をテストできるか少し迷っています。どんなアイデアでも素晴らしいでしょう!

4

1 に答える 1

1

zip->close() メソッドは、アーカイブに追加されたファイルが存在することを必要とするいくつかの処理 (実際の圧縮、または単にファイル属性の取得/書き込み) を行います。ただし、move_uploaded_file() 呼び出しを使用して元の場所から入力ファイルを削除しています。

于 2012-12-10T14:18:40.293 に答える