docker-composeで作ったPHP 7.4環境で,ZipArchiveクラス(php7.4-zip)を使えるようにした話. docker-composeでのPHP 7.4+ZipArchive環境ローカルのWeb開発環境(Windows10)を,XAMPPからdockerに移行することにしました.XAMPPとは,Apache+MySQL+PHPです. ついでに,PHPのバージョンを7.4に上げます. ...docker-composeを使って,PHP 7.4+Apache+MySQLの環境は割と簡単に作れたのですが, 起動してブラウザからPHPアプリを動かしていると,「ZipArchiveクラス」を使っている箇所でエラーが出ました. Fatal error: Uncaught Error: Class 'ZipArchive' not found でまぁ,php7.4-zipというパッケージが必要だったのですが,これをdockerのphp用コンテナにインストールするのにかなりハマりましたので記録します. キモキモとしては,以下の2点になります.
前者については, を参考に,Suryというリポジトリを追加してそこからインストールするようにしました. 後者については,そのリンク先のドキュメントに書かれているように, /etc/apt/preferences.d/no-debian-php 作ったdockerfiledockerfileFROM php:7.4-apache RUN apt install -y libzip-dev && \ docker-php-ext-install zip RUN echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list RUN apt install -y ca-certificates apt-transport-https gnupg wget && \ wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add - && \ apt update RUN rm /etc/apt/preferences.d/no-debian-php RUN apt install -y php7.4-zip もう少しスマートに行かないものかな〜とも思いますが, まぁこれで,PHPアプリからZipArchiveクラスを使えるようになりました. |