ユーザ用ツール

サイト用ツール


サイドバー

サーバ:aws:トラブルシューティング:imagecreatefromjpeg_や_imagejpeg_で_call_to_undefined_function_が発生する

【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」有効になりました。
再度サイトにアクセスして、画像処理が正常に動作するのを確認して完了です。

コメント

コメントを入力. Wiki文法が有効です:
 
サーバ/aws/トラブルシューティング/imagecreatefromjpeg_や_imagejpeg_で_call_to_undefined_function_が発生する.txt · 最終更新: 2020/05/26 16:05 by humolife