====== 【Amazon Linux 2】imagecreatefromjpeg() や imagejpeg() で Call to undefined function が発生する ======
Amazon Linux 2 に amazon-linux-extras を使用して PHP7.4 をインストールしたところ、以下のエラーが発生しました。
staging.ERROR: Call to undefined function Intervention\Image\Gd\imagecreatefromjpeg() at /var/www/XXX/vendor/intervention/image/src/Intervention/Image/Gd/Decoder.php:38)
staging.ERROR: Call to undefined function Intervention\Image\Gd\imagejpeg() at /var/www/XXX/vendor/intervention/image/src/Intervention/Image/Gd/Encoder.php:17)
GD ライブラリはインストールしたのですが、なぜか **imagecreatefromjpeg()** や **imagejpeg()** が見つからないとエラーが出ます。
そこで以下のコマンドを流し、GD ライブラリの情報を確認したところ「JPEG Support」が有効になっていませんでした。
# GD ライブラリの情報を確認
$ php -r 'print_r(gd_info());'
Array
(
[GD Version] => bundled (2.1.0 compatible)
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] =>
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] => 1
[XBM Support] => 1
[WebP Support] =>
[BMP Support] => 1
[JIS-mapped Japanese Font Support] =>
)
色々と原因を調べたところ、2020/05/26 現在 Amazon の Extras library から PHP7.4 をインストールした場合、yum install で php-gd をインストールしても「JPEG Support」が有効にならないようです。
簡単な対処法としては、以下の2つになります。
* amazon-linux-extras を使う場合、バージョンを落として PHP7.3 を入れる
* amazon-linux-extras を使わず、Remi リポジトリ で PHP7.4 を入れる
今回は amazon-linux-extras で PHP7.3 を入れることにしました。
# Extras library に PHP7.3 があることを確認
amazon-linux-extras list | grep php
# PHP7.4 がインストール済みなのを確認
yum list installed | grep php
# インストール済みの PHP7.4 を削除
sudo yum remove $(yum list installed | grep php | awk '{ print $1 }')
# 削除されたことを確認
yum list installed | grep php
# Extras library を使って PHP7.3 のインストール
sudo amazon-linux-extras install -y php7.3
# インストールされたパッケージの確認
yum list installed | grep php
# 足りないパッケージを必要に応じて yum でインストール
sudo yum install -y php-gd php-mbstring php-pecl-zip php-xml
# インストールされたパッケージの確認
yum list installed | grep php
# 一応サーバを再起動
sudo reboot
# PHP バージョンの確認
php -v
# GD ライブラリの情報を確認
php -r 'print_r(gd_info());'
Array
(
[GD Version] => bundled (2.1.0 compatible)
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] => 1
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] => 1
[XBM Support] => 1
[WebP Support] =>
[BMP Support] => 1
[JIS-mapped Japanese Font Support] =>
)
「JPEG Support」が「1」有効になりました。\\
再度サイトにアクセスして、画像処理が正常に動作するのを確認して完了です。