簡體   English   中英

PHP ZipArchive extractTo問題

[英]PHP ZipArchive extractTo issues

因此,我正在嘗試創建批量上傳功能,用戶可以上傳包含大量PDF的單個zip文件,然后將其處理並存儲在服務器上等。

到目前為止我有這個......

$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']);
}

我看到的問題是,即使extractTo函數作為一個成功的提取(1)返回,我也看不到那些顯然被提取的文件?!

我總是看到Archive.zip文件,所以我知道正在上傳...

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

關於我做錯了什么的任何想法?! : - /

環境:運行PHP 5.3.3的Centos 6

UPDATE

下面(使用完全限定的路徑)不會拋出任何錯誤,只是似乎沒有做任何提取?!

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

下面(帶相對路徑),拋出一個Warning: ZipArchive::extractTo(): Permission denied in...錯誤?!

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

干杯伙計們

對於那些由於遇到類似問題而發現此問題的人...

我設法通過更改第二個參數來“修復”此問題:

從這里$zip->open($new_zip_file, ZipArchive::OVERWRITE)

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

php.net

ZipArchive::CREATE (integer)

如果存檔不存在,請創建存檔。

ZipArchive::OVERWRITE (integer)

始終啟動新存檔,此模式將覆蓋該文件(如果該文件已存在)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM