Edited at

PHPの拡張モジュールGDが動くまでの試行錯誤

More than 1 year has passed since last update.


PHPの拡張モジュールGDが動くまでの試行錯誤

Linux系OSへPHP拡張モジュールのGD(画像変換モジュール)をインストールするだけで結構はまったので試行錯誤をメモ。

PHPの拡張モジュールを入れる際の確認ポイントの参考にしてみるのもいいかも。


GDのインストール確認

phpinfo() の ConfigureCommand 項目をみると


--without-gd


になっている。

GD欄も存在しないので入っていないらしい。


phpinfo.php

<? phpinfo(); ?>


以下のコマンドでも確認できます。


php -m | grep gd



GDをインストールしてみる


yum install php-gd


失敗。

失敗する原因として、PHPのバージョンに合っていない、他の関連モジュールの影響で入れられないといった原因が考えられます。

インストールできるGDが他にないか確認


yum list | grep gd


php54-php-gd.x86_64があった。

x86_64, amd64 は64ビット i386, i686, x86 は32ビット

remiリポジトリからインストール。

「yum」のデフォルトリポジトリのパッケージが古く、最新版のパッケージをインストールしたい場合には、RPMコマンドを使って外部リポジトリを追加します。「remi」はよく使われる外部リポジトリのひとつです。


yum install php54-php-gd.x86_64 --enablerepo=remi


成功。


GDのインストール確認

/etc/php.ini に以下を追記して、Apacheを再起動。


extension=gd.so


うまく動かない。

入れなおしてみたり


yum remove php54-php-gd.x86_64

yum install php54-php-gd.x86_64


効果なし。

yum remove を行う場合は、他のモジュールが使用している関連モジュールを消さないように気をつけます。

/etc/php.d/gd.ini を作ってみてもうまく動かない。


拡張モジュールの確認


ls /usr/lib64/php/modules/gd.so


拡張モジュールがなかった。ありがち。


拡張モジュールを探す旅にでる

色々苦戦している人を発見する。

http://xiaoxia.exblog.jp/6226189

rpmパッケージの問題?


rpm -qa | grep gd

php54-php-gd-5.4.39-1.el6.remi.x86_64

gd-2.0.35-11.el6.i686

gd-2.0.35-11.el6.x86_64

gd-progs-2.0.35-11.el6.x86_64

gd-last-2.1.1-1.el6.remi.x86_64


うーむ、パッケージは問題なさそう。。

gd.so がどこにあるか探す


find /usr/ -name gd.so


/usr/lib64/libgd.so.3.0.0 があったので、ショートカットリンク作成


ln -s /usr/lib64/libgd.so.3.0.0 gd.so

php -m | grep gd

PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'gd.so' in Unknown on line 0


PHPのライブラリじゃないよって怒られて、上手くいかない。

インストールした場所を調べる。


rpm -ql php54-php-gd.x86_64

/opt/remi/php54/root/usr/lib64/php/modules/gd.so


いた。なんでそんなところに。。

仕方がないのでショートカットリンク作成


ln -s /opt/remi/php54/root/usr/lib64/php/modules/gd.so /usr/lib64/php/modules/gd.so


Apacheを再起動したら動きました。


まとめ


  1. phpinfo() の ConfigureCommand 項目は割とあてにならない

  2. 動かないときは拡張モジュールを確認する

  3. ショートカットリンクでも動く

GDなどの拡張モジュールがインストールできなくて困っている人の助けになれば幸いです。