PHPの拡張モジュールGDが動くまでの試行錯誤
Linux系OSへPHP拡張モジュールのGD(画像変換モジュール)をインストールするだけで結構はまったので試行錯誤をメモ。
PHPの拡張モジュールを入れる際の確認ポイントの参考にしてみるのもいいかも。
GDのインストール確認
phpinfo() の ConfigureCommand 項目をみると
--without-gd
になっている。
GD欄も存在しないので入っていないらしい。
<? 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を再起動したら動きました。
まとめ
- phpinfo() の ConfigureCommand 項目は割とあてにならない
- 動かないときは拡張モジュールを確認する
- ショートカットリンクでも動く
GDなどの拡張モジュールがインストールできなくて困っている人の助けになれば幸いです。