2011-01-29 14 views
0

以下の機能を実行すると、致命的なエラーが発生します:クラス 'ZipArchive'が/home/test/dummyurl.comに見つかりませんライン上の/wp-content/themes/mytheme/upload-zip.php 14致命的なエラー:Class 'ZipArchive'が見つかりませんでした(PHP 5.3.1)

PHPのバージョンが5.3.1

function openZip($file_to_open) { 
    global $target; 
    $zip = new ZipArchive(); //This is line 14 
    $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!"); 
    } 
} 

これはWordPressのアプリケーションである、と私は、私はおそらくすることができるかもしれないと思うです上記の不足している理由ZIPARCHIVEクラス組み込み関数を使用して...わからないまだ代わりに(下記参照)が、

/** 
    * Unzip's a specified ZIP file to a location on the Filesystem via the WordPress Filesystem Abstraction. 
    * Assumes that WP_Filesystem() has already been called and set up. Does not extract a root-level __MACOSX directory, if present. 
    * 
    * Attempts to increase the PHP Memory limit to 256M before uncompressing, 
    * However, The most memory required shouldn't be much larger than the Archive itself. 
    * 
    * @since 2.5.0 
    * 
    * @param string $file Full path and filename of zip archive 
    * @param string $to Full path on the filesystem to extract archive to 
    * @return mixed WP_Error on failure, True on success 
    */ 
function unzip_file($file, $to) { 
    global $wp_filesystem; 

    if (! $wp_filesystem || !is_object($wp_filesystem)) 
    return new WP_Error('fs_unavailable', __('Could not access filesystem.')); 

    // Unzip can use a lot of memory, but not this much hopefully 
    @ini_set('memory_limit', '256M'); 

    $needed_dirs = array(); 
    $to = trailingslashit($to); 

    // Determine any parent dir's needed (of the upgrade directory) 
    if (! $wp_filesystem->is_dir($to)) { //Only do parents if no children exist 
    $path = preg_split('![/\\\]!', untrailingslashit($to)); 
    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 
    } 
    } 

    if (class_exists('ZipArchive') && apply_filters('unzip_file_use_ziparchive', true)) { 
    $result = _unzip_file_ziparchive($file, $to, $needed_dirs); 
    if (true === $result) { 
    return $result; 
    } elseif (is_wp_error($result)) { 
    if ('incompatible_archive' != $result->get_error_code()) 
    return $result; 
    } 
    } 
    // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file. 
    return _unzip_file_pclzip($file, $to, $needed_dirs); 
} 

答えて

2

ZipArchiveを有効にするには、--enable-zipオプションas stated in the documentationでPHPをコンパイルする必要があります。

また、zip PECL packageをインストールすることもできます。あなたは

2 php_zip PHPの拡張子

1)を有効にする必要が

0

は)

をphp_zlib_filters
関連する問題