加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP ZipArchive extractTo问题

发布时间:2020-12-13 16:04:36 所属栏目:PHP教程 来源:网络整理
导读:因此,我正在尝试创建批量上传功能,用户可以上传包含大量PDF的单个zip文件,然后将其处理并存储在服务器上等. 到目前为止我有这个…… $serverpath = $_SERVER['DOCUMENT_ROOT'];if(array_key_exists('bulk_filename',$_FILES)){ if ($_FILES['bulk_filename']
因此,我正在尝试创建批量上传功能,用户可以上传包含大量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/');

下面(带相对路径),抛出一个警告:ZipArchive :: extractTo():权限被拒绝…错误?!

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

干杯伙计们

解决方法

对于那些由于遇到类似问题而发现此问题的人…

我设法通过更改第二个参数来“修复”此问题:

从这里:$zip-> open($new_zip_file,ZipArchive :: OVERWRITE)

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

php.net

ZipArchive :: CREATE(整数)

如果存档不存在,请创建存档.

ZipArchive :: OVERWRITE(整数)

始终启动新存档,此模式将覆盖该文件(如果该文件已存在).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读