php-gd のインストールではまったこと

本番にはあるけどステージング環境に GD モジュールがない!という状況に陥ったので、インストールすることにしました。
(ステージング環境がちゃんと動き出したのが最近で、全部の機能が動くことを確認出来ていなくて、今日まで気付かなかった…。)

php-gd のインストール

yum を使う

色々回り道したけど、結局は yum を使って一発インストール。(迷走した記録は後述します。)
一応インストールする gd ライブラリを確認してから実行しました。

$ yum list | grep gd
$ yum install php-gd.i386
gd.ini の作成

php-gd を有効にするために、ini ファイルを作って設定します。
gd.ini は、共通にインクルードされる設定ファイルがある場所におきます。

$ cd /etc/php.d
$ vim gd.ini
## 下記を記載して保存 ###
extension=gd.so
apache をリロード

設定ファイルを追加したので、リロードしておきます。

$ apachectl graceful
設定できたか確認

gd がリストにあればインストールおよび設定完了です。

$ php -m
[PHP Modules]
gd
  :

迷走した記録(読まなくて OK)

結局作業自体は上記の手順で良かったのですが、それにいたるまでいろいろ迷走しました。
また同じようなことではまらないように、書いておきます。

imagecreatetruecolor() がない

最初は、下記のようなエラーログが出力されていました。調べてみると GD モジュールがない疑惑が生じました。

Fatal error: Call to undefined function imagecreatetruecolor() 
GD モジュールの確認

GD モジュールは、PHP 5.2.0 以上の場合標準でインストールされているとのことです。
じゃあ PHP のバージョンが低いの?と思って調べてみると、5.1.6 でした…。

$ php -v
 PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:37)

念のため GD モジュールが存在するのか確認したけど、やっぱりない。
やっぱり別にインストールする必要がありました。
今まで確認する時って、画面に phpinfo(); とかで表示してたけど、コマンドで確認する方法を覚えました。

  • i オプション:phpinfo の実行結果をコマンドライン形式で表示する。
  • m オプション:読み込まれているモジュールの一覧を表示する。
# 実行はこんな感じで
$ php -i | grep gd
$ php -m | grep gd
GD モジュールのインストール

GDライブラリのインストール を参考にしてインストールすることにしました。
ファイルを wget で取得したところまでは良かったのですが、make 時にエラーが起こりました。

$ cd /usr/local/src
$ wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
$ cd gd-2.0.35
$ ./configure
$ make
cd . && /bin/sh /usr/local/src/gd-2.0.35/config/missing --run aclocal-1.9 -I config
aclocal:configure.ac:64: warning: macro `AM_ICONV' not found in library
 cd . && /bin/sh /usr/local/src/gd-2.0.35/config/missing --run automake-1.9 --foreign
Makefile.am:18: Libtool library used but `LIBTOOL' is undefined
Makefile.am:18:
Makefile.am:18: The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
Makefile.am:18: to `configure.ac' and run `aclocal' and `autoconf' again.
make: *** [Makefile.in] Error 1
エラーの原因?

よくわからないんですが、libgdのmakeでエラー を見ると同じような状態になっている人がいました。
libiconv を入れれば動くのかな…?と思いつつ、もう嫌になってきました。
周りの人に助けを求めたら、「yum でインストールできるんじゃない?」といわれてショックをうけつつ、上記の方法でインストールしたのでした。