laravelでExcelにあるデータをインポートしようとしたら
「Class 'ZipArchive' not foundエラー」が出ました。
内容的には「ZipArchiveというクラスが無いです!」と言っています。
しかし、
どこにZipArchiveというクラスをインストールしたら良いのか?
などエラー解決に時間がかかったのでメモに残したいと思います。
開発環境
MacOSにLinuxの環境を作り、
Dockerを立ててlaravelを動かしている感じです。
実装
まずphp -mでモジュールがあるか確認してください。
※php -m (モジュールの一覧を表示)
■MacOS
ユーザー名@コンピュータ名 docker-on-vagrant %php -m
■Linux
[vagrant@local-docker docker-laravel]$php -m
■Docker Webコンテナ内
[root@3ab4e8805629 html]# php -m
今回はDocker Webコンテナ内にzipモジュールをインストールすることで解決できました。
zipインストール
[root@3ab4e8805629 html]# yum install --enablerepo=remi,remi-php72 php-pecl-zip
DockerのWebコンテナ再起動
docker restart apache-php
もう一度Docker Webコンテナ内に戻り php -mを試してください。
zipがインストールされていてエラーが解決できると思います。
※docker-compose downにするとzipモジュール消えます
今回はこの方法でzipをインストールしましたが、docker-compose downすると毎回zipをインストールしないといけないので
Dockerファイルにzipをインストールする記述を書いた方がいいとも感じました。
またおいおい書いていこうかと思います。