Fatal error: Call to undefined function imagecreatefromjpeg() の対処法

PHPでGD関数のうちJPEG関連の関数が使えない場合の対処法です。

[参考記事] PHP Startup: Unable to load dynamic libraryのエラー
[参考記事] PHPをyumでインストールする
[参考記事] PHPをソースコードからインストールする

具体的にはimagecreatefromjpeg()などを使用すると次のようなエラーが出たときです。

Fatal error: Call to undefined function imagecreatefromjpeg()

このとき、まずはGD自体が使用できるか確認します。
phpinfoなどでgdの項目があるかどうかを確認します。

コマンドラインからは次のコマンドを実行します。

php -i

webサーバからは次のコードを書いたPHPファイルを公開層においてブラウザからアクセスします。

<?php phpinfo();


このときgdの項でJPG Supportがenabledとなっていなかった場合は、GDが使用できていてもJPEG関連のライブラリが有効ではありません。

次のように表示されていたときには正しくGD関数およびJPEGライブラリが使用できています。


次のように表示されていたときにはGD関数は使用できますが、JPEGライブラリは使用できません。


GDが入っていない場合は./configureのオプションに--with-gdをつけてコンパイルします。

yumの場合は

yum install php-gd

です。

それでも使用できない場合はphp.iniの

extension=gd.so

がコメントアウトされていないことを確認します。

GDが入っていてJPEG関係の関数が使用できないときには、libjpegが追加で含まれていません。

libjpeg自体をインストールしていない場合には、別途インストールします。

libjpegのインストール

wget -P /usr/local/src http://www.ijg.org/files/jpegsrc.v8c.tar.gz
cd /usr/local/src
tar xzf jpegsrc.v8c.tar.gz
cd jpeg-8c
./configure --enable-shared
make
make install

libjpegをインストールしたら、PHPを--with-jpeg-dir=/usr/local/lib付でコンパイルしなおします。

それでもJPEG関係の関数が使用できないときには、--with-gdより前に--with-jpeg-dirを指定してコンパイルする。
またmake installの前にmake cleanをするとよいようです。

./configure --with-jpeg-dir=/usr/local/lib --with-gd [その他のオプション]
make
make clean
make install

またPHPをインストールしなおしたり、設定変更を行った場合はApacheを再起動しないと有効になりません。

関連記事

スポンサーリンク

onPaste

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る