#環境
・Docker, docker-composeを用いてLEMP(laravel, php-fpm, nginx, MySQL)環境
・php-fpm7.4
・MySQL8.0
・nginx1.8
#概要
LaravelでIntervention/Imageを使って画像のアップロード機能を実装する際に、以下のエラーが出た。
###エラー
GD Library extension not available with this PHP installation
「このPHPインストール環境では、GD拡張機能は使えませんよ」という意味。
###同様の事例
同様の事例を調べたところ、以下の記事がヒットした。
LaravelでGD Library extension not available with this PHP installation.のエラーが出た時の対処法
この記事によると、「Intervention/Image」はPHP5.4以上では、画像処理ライブラリのGDまたはImageMagickをインストールする必要があり、下記の対処を行えば良いとのこと。
apt-get update
apt-get install php7.0-gd
しかし、Dockerfileに上記apt-get install php7.0-gd
を追記してもそんなパッケージはありませんと怒られてしまう。
#対処
DockerでGD拡張機能を使うためにDockerfileをどのように書き換えれば良いか模索した結果以下の記事とその参考元のDockerfileの使い方の表記を発見。
・ DockerでのGD拡張についてPHP/Laravel
・ https://hub.docker.com/_/php
上記を参考にphp実行環境のDockerfileを以下のように修正
FROM php:7.4-fpm-buster
SHELL ["/bin/bash", "-oeux", "pipefail", "-c"]
ENV \
COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/composer
COPY --from=composer:2.0 /usr/bin/composer /usr/bin/composer
RUN apt-get update
RUN apt-get -y install git libicu-dev libonig-dev libzip-dev unzip locales \
+ libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \ //追記:GD拡張に必要なパッケージ
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
locale-gen en_US.UTF-8 && \
localedef -f UTF-8 -i en_US en_US.UTF-8 && \
mkdir /var/run/php-fpm && \
mkdir /var/log/php && \
docker-php-ext-install intl pdo_mysql zip bcmath && \
+ docker-php-ext-configure gd --with-freetype --with-jpeg && \ //追記
+ docker-php-ext-install -j$(nproc) gd && \ //追記
composer config -g process-timeout 3600 && \
composer config -g repos.packagist composer https://packagist.org
COPY ./php-fpm.d/zzz-www.conf /usr/local/etc/php-fpm.d/zzz-www.conf
COPY ./php.ini /usr/local/etc/php/php.ini
WORKDIR /work/backend
#結論
LEMP環境下でGD拡張機能を使えるようにするためには、Dockerfileに下記コードを追記する必要がありました。
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install -j$(nproc) gd
#参考
・ LaravelでGD Library extension not available with this PHP installation.のエラーが出た時の対処法
・ DockerでのGD拡張についてPHP/Laravel
・ https://hub.docker.com/_/php
→特に参考になりました。