在调用_unzip_file_pclzip(又名PclZip)时,我应该传递什么作为$Needed_dirs?

时间:2011-02-01 作者:Scott B

我试图在ZipArchive不存在时创建一个回退方法。我正在寻求使用wp admin/includes/file中包含的\\u unzip\\u file\\u pclzip()函数。php

然而,我不确定$needed\\u dirs参数的期望值。

我的zip目标文件夹将是我的主题文件夹下的“styles”文件夹,因此路径将是“wp content/themes/mytheme/styles/”

这是对$needed\\u dirs的期望吗?

function openZip($file_to_open) { 
    global $wp_filesystem;//required if _unzip_file_pclzip is used directly
    global $target;  
    if(class_exists(\'ZipArchive\'))
    {
        $zip = new ZipArchive();  
        $x = $zip->open($file_to_open);  
        if($x === true) 
        {  
            $zip->extractTo($target);  
            $zip->close();                
            unlink($file_to_open);  
        } else {  
            die("There was a problem. Please try again!");  
        }
    }
    else
    {
        $needed_dirs = array();
        _unzip_file_pclzip($file_to_open, $target, $needed_dirs);
    }
} 

1 个回复
最合适的回答,由SO网友:Evan Yeung 整理而成

@Scott B我还没有测试这个脚本,它取自inlcudes/file。php->第559行

_unzip_file_pclzip 假设已经调用了WP\\u Filesystem(),因此需要设置global $wp_filesystem

global $wp_filesystem;
$needed_dirs = array();
$target = trailingslashit($target);

// Determine any parent dir\'s needed (of the upgrade directory)
if ( ! $wp_filesystem->is_dir($target) ) { //Only do parents if no children exist
    $path = preg_split(\'![/\\\\\\]!\', untrailingslashit($target));
    for ( $i = count($path); $i >= 0; $i-- ) {
        if ( empty($path[$i]) )
            continue;

        $dir = implode(\'/\', array_slice($path, 0, $i+1) );
        if ( preg_match(\'!^[a-z]:$!i\', $dir) ) // Skip it if it looks like a Windows Drive letter.
            continue;

        if ( ! $wp_filesystem->is_dir($dir) )
            $needed_dirs[] = $dir;
        else
             break; // A folder exists, therefor, we dont need the check the levels below this
    }
}

结束

相关推荐

致命错误:找不到类‘ZipArchive’

导致此错误的原因:致命错误:在/home/test/dummyurl中找不到类“ZipArchive”。com/wp-content/themes/mytheme/upload-zip。php在线14PHP版本为5.3.1WP是否有我应该使用的内置功能?例如的“unzip\\u file”功能行525/wp管理/包括/文件。php“?function openZip($file_to_open) { global $target; $zip = new ZipArch