4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WindowsのPHPを8.2にアップデートしたらClass "ZipArchive" not found

Posted at

結論

WindowsでPHPを8.2.0以降にアップデートしたときに、
PHP Fatal error: Uncaught Error: Class "ZipArchive" not found in ***
のエラーが出たら
php.iniに以下の1行を追加
extension=zip

アップデートすることになった理由

WindowsにPHPを入れて色々なツールを動かしているのだけど、PHP7.3.3でSplFileObjectを使ってCSVファイルを読み込むと、データ中に改行があって""で囲まれているCSVファイルがうまく読み込めない。
他のマシンで試すと同じコードで正しく読み込めた。他のマシンのPHPのバージョンを調べると8.2.2だったので、PHP7.3.3のマシンも8.2.2にアップデートすることにした。

結論に達するまで

PHPのコード中でZipArchiveを使っていると
PHP Fatal error: Uncaught Error: Class "ZipArchive" not found in ***
というエラーが出るので、PHPのドキュメントを調べてみると、
https://www.php.net/manual/ja/zip.installation.php
こちらのページに
PHP 8.2.0 以降では、 php_zip.dll を php.ini で有効にする必要があります。
と書いてある。「php_zip.dll を php.ini で有効にする」って何だ??と思って、PHP8.2.2をインストールしたときにできたphp.iniのサンプルphp.ini-productionを開いてキーワード「zip」で検索してみると、
;extension=zip
という行があったので、この行のコメントアウトを外して、php.ini に追記したらZipArchiveが使えるようになった。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?