uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2020.1.8【PHP】Docker PHP7.4系でgdをインストールしてimagecreatefromjpegを使う

【PHP】Docker PHP7.4系でgdをインストールしてimagecreatefromjpegを使う

フォトスタジオ案件で画像を回転させるときにimagecreatefromjpegを使っていました。 以前はPHP7.1で開発していてたのですが、今回Docker化してPHPのバージョンをあげようとしたら盛大にハマったので共有しておきます。

PHP7.0系でGDライブラリをインストール

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では同じ方法でインストールできません。

php7.4系でGDライブラリをインストール

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の引数が変更されています。
私は原因特定にかなり時間かかりました・・・

GDライブラリの動作確認

軽く動作確認するためにサンプルの画像を右回転させてみましょう。

$resourse = imagecreatefromjpeg(“./test.jpeg”);
$resourse = imagerotate($resourse, 270, 0, 0);
imagejpeg($resourse, "./output.jpeg");

回転画像

無事右に90度回転しました。 これでPHP7.4系でGDライブラリが使用できるようになりますね。

PROFILE

このサイトを運営してるuiuifreeです。
渋谷のベンチャー企業で2年ほど新規事業を担当した後にフリーランスエンジニアにキャリア転換。
求人サイトの開発が多くエンジニア/看護師/保育士などの分野でサイトを運営しています。

アウトプット中の技術

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)