web-dev-qa-db-ja.com

PHPExcel ZipArchiveが見つかりません

PHPExcelパッケージをダウンロードしたばかりで、Excelスプレッドシートをインポートしようとしましたが、エラーZipArchive not found。私はWindowsで作業していますが、サーバーはLinux上にあります。私はチェックした php.ini php_Zipが無効になっているかどうかを確認しますが、それもありませんでした。

PECLでインストールしようとしました:$ pecl install Zip

No releases availble for package "pecl.php.net/Zip" Cannot initialize 'channel://pecl.php.net/Zip', invalid or missing package file Package "channel://pecl.php.net/Zip" is not valid install failed

また、pear install Zip-1.10.2.tgzしかし、ほとんど同じメッセージを受信しました。

私はサーバーへのルート権限を持っていません、多分それは本当ですか?とにかく、これで私を助けてもらえますか?

14
whiteestee

Excel 2007以降でデフォルトの形式として使用されるOfficeOpenXMLなどの特定のスプレッドシートファイル形式には、ZipArchiveが必要です。 PHPの最新バージョンでは、ZipArchiveは常に使用可能ですが、PHP 5.3より前では、PHP拡張機能として手動でインストールする必要がありました。

@brioshejeが言うように、ZipArchiveをPHPにインストール/有効化していない場合は、次を使用できます。

PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);

PCLZipは、PHPの組み込みZipArchiveクラスの代替としてPHPExcelディストリビューションに含まれていますが、かなり遅いです。 PCLZipを有効にすると、ZipArchiveがなくても、Zipベースのスプレッドシート形式で作業できます。

ただし、最初にPCLZip(元はPHPExcel 1.7.6)をバンドルしたときは、Zipベースの形式を読み取るときではなく、Zipベースの形式を記述するときのオプションにすぎませんでした。 PHPExcel 1.8.0でこれを変更したため、PCLZipを有効にすると、Zipベースのフォーマットを読み取ったり、書き込んだりできるようになりました。

PHPEXcel Readerのドキュメントでは、さまざまなスプレッドシート形式について詳しく説明し、Zipベースの形式について説明しています。

40
Mark Baker

私の場合、PHP 5.4
PHPExcelを使用すると、この例外が発生しました。

FatalErrorException in Excel2007.php line 94: Class 'ZipArchive' not found

PHPExcel/Reader/Excel2007.phpにこの行を追加して解決しました

PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);

getZipClassメソッドを呼び出す前。

$zipClass = PHPExcel_Settings::getZipClass();
11
Kent Aguilar

Linuxマシンにphp-ZipおよびZipプログラムのようなphpの拡張機能をインストールする必要があります。

6
Stas Panyukov

Cpanelを使用している場合、Zip拡張機能がインストールされていてもアクティブ化されていない可能性があります。アクティブにする必要があります。この場合、cpanel>ソフトウェアセクション内に移動して、PHP version。をクリックし、Zipを見つけて確認します。保存します。 Enable Zip extension

アプリケーションページを更新します。

1
Shafiq

簡単な解決策を見つけました

  1. cpanelにログインします
  2. ソフトウェアに移動して、PHP version
  3. PHPバージョン7.0を選択し、現在のボタンとして設定をクリックします
  4. zipチェックボックスをオンにします
  5. 保存をクリック

次に、サイトを更新してExcelファイルをダウンロードします

1
Raghavendra BK

簡単な方法は、PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);を呼び出す直前にスクリプトに$objWriter->save();を挿入することです。

これは私のために働いた。

よろしく!