PHP8.2環境へ移行したらZipArchiveがNotFoundになった!

※当サイトでは広告を掲載しています

今までLinuxサーバ(PHP7.2)で動かしていたものを、WindowsServer2022(PHP8.2)へ移行したところ、以下のようなエラーが発生しました。

PHP Fatal error: Uncaught Error: Class "ZipArchive" not found in C:\***\htdocs\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Writer\Xlsx.php:210

PHPでExcelファイルを取り扱うためにPhpSpreadSheetを使っているのですが、この処理途中でZipArchiveが無いよ!と言われているのです。

エクセル形式ファイル(拡張子.xlsx)って、中身はZIPアーカイブなんですよね。拡張子を.zipに変更すれば、ZIP形式書庫として展開できます。

で、そのZIPアーカイブを扱うためのクラスが無い、という状態。

解決方法

このエラーを解決する方法は簡単。PHP側で、ZIPアーカイブを扱うための拡張機能を有効にしてあげるだけ。

php.iniにある以下の行のコメントアウトを外してApacheを再起動すれば解決します。

extension=zip

さいごに

ZipArchiveについて、Windowsでは、PHP8.2.0より前のバージョンには標準で拡張モジュールが組み込まれていたようなのですが、8.2.0からは明示的に有効にする必要があるそうです。

PHP: インストール手順 - Manual
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites i...

php.iniに一行追加する(コメントアウトを外す)だけでいいので、簡単に解決できました。

今日の作業は以上です。お疲れ様でした!

初稿:2025年3月1日

コメント

タイトルとURLをコピーしました