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

  • 32
    いいね
  • 0
    コメント

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などの拡張モジュールがインストールできなくて困っている人の助けになれば幸いです。