フォトスタジオ案件で画像を回転させるときにimagecreatefromjpeg
を使っていました。
以前はPHP7.1で開発していてたのですが、今回Docker化してPHPのバージョンをあげようとしたら盛大にハマったので共有しておきます。
PHP7.0系の環境では次のようにしてGDライブラリをインストールします。
FROM php:7.1.10-apache
RUN apt-get update \
&& apt-get install -y \
gcc \
make \
libpng-dev \
libmcrypt-dev \
libjpeg-dev \
libfreetype6-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
ですがphp7.4では同じ方法でインストールできません。
FROM php:7.4.1-apache
RUN apt-get update
RUN apt-get install -y wget libjpeg-dev libfreetype6-dev
RUN apt-get install -y libmagick++-dev \
libmagickwand-dev \
libpq-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libwebp-dev \
libxpm-dev
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/
RUN docker-php-ext-install -j$(nproc) gd
見ての通りdocker-php-ext-configureの引数が変更されています。
私は原因特定にかなり時間かかりました・・・
軽く動作確認するためにサンプルの画像を右回転させてみましょう。
$resourse = imagecreatefromjpeg(“./test.jpeg”);
$resourse = imagerotate($resourse, 270, 0, 0);
imagejpeg($resourse, "./output.jpeg");
無事右に90度回転しました。 これでPHP7.4系でGDライブラリが使用できるようになりますね。