2011-03-12 7 views
5

私はhereを発見したことに基づいてzipスクリプトを作成しようとしていますが、致命的なエラーが表示されているようです:クラス 'ZipArchive'が新しいZipArchive );関数。PHP Zipクラスを作成するエラーが見つかりません

これを調べると、これは通常、PHPがコンパイルされる方法によるものと思われます。私は共有ホスティングアカウントを持っているので、私はこのようなものを設定していません...そして、私はビルドを変更することはできないと仮定します。関心の外に、私は私ののphpinfo()で見ていたし、私は、関連見えたいくつかのものが見つかりました:私はこれのいずれかがあることを意味している場合entirlyわからないんだけど、バージョン5.2.6

BZip2 Support Enabled <--maybe not so relevant 
ZLib Support enabled 
Stream Wrapper support compress.zlib:// 
Stream Filter support zlib.inflate, zlib.deflate 
Compiled Version 1.1.4 
Linked Version 1.1.4 

PHPをIジップを作成する能力があります。 詳細については(私はそれが残念だとは思わないが)これまでのところ私のスクリプトです....これはあなたが私がこのクラスを見つけられないので、

$file = tempnam("tmp", "zip"); 
$zip = new ZipArchive(); 
$zip->open($file, ZipArchive::OVERWRITE); 


    //the string "file1" is the name we're assigning the file in the archive 
$zip->addFile('show1.jpg', 'file1.jpg'); 
$zip->addFile('show2.jpg', 'file2.jpg'); 
$zip->addFile('show3.jpg', 'file3.jpg'); 
$zip->addFile('show4.jpg', 'file4.jpg'); 
$zip->addFile('show5.jpg', 'file5.jpg'); 
$zip->addFile('show6.jpg', 'file6.jpg'); 

// echo $zip->file(); //this sends the compressed archive to the output buffer instead of writing it to a file. 

$zip->close(); 
header('Content-Type: application/zip'); 
header('Content-Length: ' . filesize($file)); 
header('Content-Disposition: attachment; filename="' . $file.'"'); 
readfile($file); 
unlink($file); 

は私の質問(複数可)が実際にある:

  1. 私はこのエラーを引き起こすことが私のスクリプトで何をやっていますか?
  2. 私のphpinfo()からのそのようなものは、Zipファイルを作成することができなければならないことを意味します。私がそこに探しているものではなく、私に能力があれば教えてください。
  3. これはZLibがライブラリの一部のソフトですが、私はそれが何をしたいのか、それを使うのかどうかは分かりません。これはちょっとしたことですが、ifそれは私がそれを使用する方法の正しい方向に私を指すことができますZIPファイルを作成するのに役立ちますか?

ありがとうございます。 Dan

答えて

3

ZipArchiveは、デフォルトでは明らかにPHPにコンパイルされていません。 '--with-zip ='オプションで再コンパイルするか、PECL経由でインストールするだけです。ここで

は異なる方法を説明するマニュアルページです:

http://www.php.net/manual/en/zip.installation.php

+2

私は共有ホスティング上だと私はそのシーイングものの仮定アカウント私はこれを行うことはできません? Webホスティングプロバイダ(私の場合はstreamline.net)は、PHPを再コンパイルして、右のものを追加することができる唯一の人ですか?...または私ができることは何ですか? –

+4

あなたのホスティングプロバイダがzipでPHPビルドをやり直すことができない場合、PCLZipライブラリが代わりになる可能性があります –

+0

@マークBaker Thanks Mark、私は今朝PCLZipを探してきました。 –

1

zlibのは、重要な圧縮ライブラリですが、あなたがthe zip extension itselfが欠けているように、それが聞こえます。 phpinfoからあなたの情報を入手したようです。正確な単語「zip extension」を探します。あなたがそれらを見つけることができない場合、それはインストールされていないので、それによって提供される関数とメソッドを使用することはできません。

0

最後の手段としてdl("zip.so");を試すことができます。しかし、その拡張は外部モジュールとして構築されることはめったにありません。 PHPソースやhttp://pecl.php.net/package/zipから手でダウンロードしてコンパイルすることもできます。pecl build

それ以外の場合は、別の方法を探す必要があります。 http://pear.php.net/package/Archive_Zipが気になります。アップグレードPHPのバージョンやzip extensionをお持ちの場合は

0

だから、あなたがそれをインストールする必要があり

ではありません。

1)を開き、端末

2)須藤はapt-getをインストールphp7.0ジップ

3)sudoのサービスapache2の再起動

関連する問題