このGDライブラリがないと、いくつかのCMSの画像の処理が出来ません。
僕の環境、購入しただけのMacminiでは、最初からGDが有効になていました。よくわかりません。
phpで画像を扱う、例えばWordPressでデフォルトのテーマ(キューブリックなんとか)でタイトルのバックグランド色を替えるとか、そういったものに使われるライブラリです。通常にphpをインストールするとgdは無効になるらしいです。
今回MacOS上でDrupalのテストを行っていて、この問題(gdがない)にぶつかりました。
上記は、インストールに成功したあとのphpinfoの抜粋です。
方法としては二つ有るようです。
準備としては大きなものと小さいものとで二つあります。まず大きなものから。。。
MacOSのDVDの中にコード開発用のTool類が入っているので、通常のOSインストールでは導入されないX Code Toolsをインストールする。これのインストールにかなりの容量を食いつぶします。3GBぐらいかな。
Mac OS X用の開発ツールは、OSインストールDVDからX code Toolsをインストールするのですが、ディスクを挿入し、
この中の「Optional Installs」フォルダから「Xcode Tools」フォルダを開き、XcodeTooks.mpkgファイルを実行するとインストーラが表示されます。特に設定もなく画面に従ってインストールをします。容量が大きく、かなりのDisk容量(3GBぐらい)と時間(1時間ぐらい)がかかりました。@PowerBookG4(867MHz)
jpegとpngを扱うためのライブラリを入れます。Mac OS X向けのバイナリが配布されているので、以下のURLより「Combo Installer: libpng & libjpeg」をダウンロードします。
http://ethan.tira-thompson.org/Mac_OS_X_Ports.html ETHAN TIRA-THOMPSON (Mac OS X Ports libjpeg & libpng)
ファイルはインストーラ形式となっていて、ダウンロード完了後自動でインストーラが起動します。そのままクリックしていくと、ライブラリのインストールプレフィックスは/usr/localとなっているので、インストール完了後、Terminalで/usr/local/libディレクトリを見ると、「libjpeg~」「libpng~」といったファイルができているはずです。
いよいよ、ここからです。まず、現在のphpのバージョンを調べ、それと同じバージョンのソースをダウンロードしてきます。 php本家 http://www.php.net/releases/
今回は5.2.8でした。Safariでダウンロードすると、Downloadフォルダに入ると思います。Gzip/tarで圧縮されているんですが、ファイルをクリックして開いても解凍してphp-5.2.8 とかいうフォルダが出来ると思います。Terminalからは、
$ cd ~/Downloads $ tar zxvf php-5.2.8.tar.gz
できたフォルダの中の ext/gdディレクトリへ移動し、phpizeコマンドを引数無しで実行します。
$ cd php-5.2.8/ext/gd $ phpize
すると、ちょっと時間がかかりますが
Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519
と表示され終わります。で、次にコンパイルします。
下記を1行で入力
$ ./configure --with-jpeg-dir=/usr/local --with-png-dir=/usr/local
これでエラーなくコンパイルできたらmakeします。
$ make
もしかしたら、makeにもsudoがいるかも知れない。ちなみにsudoのパスワードはそのマックの管理者のパスワードです。すると、
Build complete. Don't forget to run 'make test'.
と表示されると思う。'make test'をしろと書いてあったけど、しなかった。
$ sudo make install
とすると、下記のメッセージ
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20060613/ Installing header files: /usr/include/php/
でインストール終了。
この状態ではGD拡張モジュールが「/usr/lib/php/extensions/no-debug-non-zts-20060613」ディレクトリに配置されただけみたいです。apache再起動後phpinfoを見ても何も変わってないです。
追加インストールした拡張モジュールを組み込むには、設定ファイルに変更を入れます。ここから、ちょっと四苦八苦したのですが、
phpの設定は、php.iniに書かれているが、デフォルトの状態では読み込まれていないようであった。phpinfoを見たとき、設定ファイルの場所に/etcと指定されているのに、Configurationファイルは(none)なっていて読み込まれてないようであった。
デフォルトの PHP の設定ファイルは /private/etc/apache2/other/php5.conf にある。GD を追加でインストールしてあるのでApache のみで php.ini を有効にしておくために、php5.confに下記を追加する。 PHPIniDir “/private/etc/apache2” なお、/etc は/private/etc/ に シンボリックリンクされている。ファイルを編集するにはviを使えば良いのだがキー割当がちょっと違ってて、うまく使えない。そこで、Finderから「移動」→「フォルダへ移動..」で「 /private/etc/apache2/other/」を入力してフォルダを表示させ、php5.confファイルのプロパティーでR/W属性に変更して、エディタで編集すればよろしい。
デフォルトのphp.iniファイルは /etc にある。標準だと、php.ini.defaultに成っていると思う。これをphp.iniに名前変更したのに、ずっーと、php.iniが読み込めてなくて不思議だった。まず、php.iniを先に指定した /private/etc/apacheにコピする。
$ sudo cp /private/etc/php.ini.default /private/etc/apache2/php.ini
同様に、R/W属性を付けてからエディタで編集する。
Extensions ディレクトリを設定
; Directory in which the loadable extensions (modules) reside. 492行目ぐらい。 extension_dir = "./" ↓ extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613"
GD を有効にする
extension=gd.so
再起動
$ sudo apachectl restart
以上で、インストール完了である。phpinfoを見ればgdが有効になっているはずである。