2016-05-04 37 views
4

を発行し、ユーザーは、サーバー上で処理され、保存されますPDFファイルの束を含む単一のzipファイルをアップロードすることができますどこで一括アップロード機能を作成しようとしているなどPHP ZIPARCHIVE extractToので

ので、これまで私はこれを持っている...

$serverpath = $_SERVER['DOCUMENT_ROOT']; 

if(array_key_exists('bulk_filename', $_FILES)){ 
    if ($_FILES['bulk_filename']['error'] === UPLOAD_ERR_OK) { 

     $file_name = $_FILES['bulk_filename']['name']; 
     $new_zip_file = $serverpath . '/customerdata/tmp_invoices/' . $file_name; 
     move_uploaded_file($_FILES['bulk_filename']['tmp_name'], $new_zip_file); 

     // zip file is coming in as "-rw-r--r--" and should be "-rwxr-xr-x" 
     exec('chmod -R 755 ' . $serverpath . '/customerdata/tmp_invoices/' . $file_name); 

     // Extract the files from zip 
     $zip = new ZipArchive; 
     $res = $zip->open($new_zip_file, ZipArchive::OVERWRITE); 
     if ($res !== true) { 
      die("Cannot open {$new_zip_file} for writing!"); 
     } 
     else{ 
      $res = $zip->extractTo($serverpath . '/customerdata/tmp_invoices/'); 
      $zip->close(); 

      //////////////////////////////////////////// 
      // I ALWAYS REACH THIS CODE BLOCK 
      // and $res always equals 1/true 
      //////////////////////////////////////////// 
     } 
    } else 
     die("Upload failed with error code " . $_FILES['bulk_filename']['error']); 
} 

私が見ている問題は、(1)、私は明らかに、抽出されたファイルが表示されないextractTo関数が成功した抽出として返すにもかかわらず、ということです!

私はそれが正しくアップロードされている知っているので、私はいつも私が間違ってやっているのと任意のアイデア...

-rwxr-xr-x 1 nginx nginx 68512374 May 4 12:39 Archive.zip 

Archive.zipファイルを参照してください! : -/

ENVIRONMENT:エラーをスローしません下記の(完全修飾パス付き) CentOSに6 PHP 5.3.3

UPDATE

を実行し、ちょうど任意の並べ替えを行うにはいないようです抽出の?

$zip->extractTo($serverpath . '/customerdata/tmp_invoices/'); 

(相対パスで)以下、Warning: ZipArchive::extractTo(): Permission denied in...エラーをスロー!

$zip->extractTo('/customerdata/tmp_invoices/'); 

乾杯のみんなその同様の問題を有することに起因するこの質問を見つけるあなたのそれらのために

答えて

1

...

私は2番目の引数を変更することで、この問題を「解決」するために管理:

THISTO $zip->open($new_zip_file, ZipArchive::OVERWRITE)

:THIS FROM

$zip->open($new_zip_file, ZipArchive::CREATE)

php.net

ZipArchive::CREATE (integer)

が存在しない場合は、アーカイブを作成します。

ZipArchive::OVERWRITE (integer)

常にそれがすでに存在する場合、このモードは、ファイルが上書きされます、新しいアーカイブを開始します。

関連する問題