4
29
2008
OSXServerのPHPにGDライブラリを組み込む方法
OSXServerのPHPにGDライブラリを組み込む方法
これまで何度か OS X Server について紹介してきましたが、今回は OS X Server に標準で備わっている PHP5 に GD ライブラリを組み込む方法について紹介します.
OSX Server 10.5 では 標準で PHP 5.2.5 (4/28 2008 時点)が組み込まれていますが、残念ながら GD ライブラリが組み込まれていません.GD ライブラリはJPEGやPNGなどの画像を扱う際にとても便利なグラフィックライブラリで、画像のサムネイル(縮小画像)を作成したり、簡単なグラフィック描画機能をPHPに組み込むことができます.先日紹介した WordPress の NEXTGen Gallery プラグインを動かすのにも、この GDライブラリが必要です.
Apple が最初から OS X Server の PHP に GDライブラリを組み込んでくれれば問題ないのですが、OSX Server の次のマイナーバージョンUP (10.5.3 : 多分今週中にぐらいに正式にリリースされるかも)でも、GDライブラリは組み込まれていません.
仕方がないので自分でGDライブラリをインストールするしかないのですが、GDライブラリを組み込むには PHPのライブラリそのものを入れ替える必要があります.このような方法を採ってしまうと、セキュリティーアップデートなどで、PHPのモジュールが入れ替わってしまった場合に、また作り直しになってしまうという厄介な問題が発生します.OS X Server に All in one サーバの快適さを求めるユーザには向きませんが、どうしてもGDライブラリが使えるPHPを使いたい方は、リスクを承知の上でトライして見て下さい.
GD ライブラリをPHPに組み込む際に参考になるサイトを幾つか挙げておきます.
・iFranky さんの “Mac OS X Server – Installing GD Library”
(英語のサイトですが、 詳しい手順を載せたPDFマニュアルが用意されています.残念ながら OSX Server 10.4 に関する情報ですが、10.5 でも殆ど同じ手順でインストール可能です)
上記の PDF マニュアルをダウンロードしておいて下さい.
インストール手順
詳しいインストール手順は、 iFranky さんのPDFのマニュアルに書かれているので、そちらを参照下さい.ここでは要約だけを書きます.
1.ソースコードの入手
次のソースコードを適当なサイトからダウンロードして下さい.
・PHP 5.2.5 ダウンロード先
・gd 2.0.35 GDライブラリ
(現時点での安定版は 2.0.35 です)
・libpng 1.2.26 libpng
( 1.2.26にはバグがあるようです.次期バージョン 1.2.27 でこのバグを解消する予定だそうです
ので、注意して下さい.CVE-2008-1382 )
・jpeg-6b 入手先:Source Forge
iFranky さんのマニュアルでは zlib 1.2.3 も入手するように書かれていますが、OSX Server に
ライブラリがインストールされているので、ソースからインストールする必要はありません.
2.ソースコードを適当なディレクトりの下で展開します.
server3:PHP5WithGD yasuaki$ ls -la
total 16
drwxr-xr-x 9 yasuaki staff 306 Apr 28 22:32 .
drwxr-xr-x 37 yasuaki staff 1258 Apr 28 23:23 ..
-rw-r--r--@ 1 yasuaki staff 6148 Apr 28 22:32 .DS_Store
drwxr-xr-x 7 yasuaki staff 238 Apr 28 22:32 Archives
drwxr-xr-x@ 98 yasuaki staff 3332 Apr 28 22:31 gd-2.0.35
drwxr-xr-x@ 147 yasuaki staff 4998 Mar 28 1998 jpeg-6b
drwxr-xr-x@ 163 yasuaki staff 5542 Apr 28 23:28 libpng-1.2.26
drwxr-xr-x@ 76 yasuaki staff 2584 Nov 9 00:36 php-5.2.5
drwxr-xr-x@ 46 yasuaki staff 1564 Jul 18 2005 zlib-1.2.3
server3:PHP5WithGD yasuaki$
3.libpng のインストール
libpng を展開したディレクトリに移動して、scripts ディレクトリにある darwin 用の makefile を
本番用の Makefile として用意する
server3:libpng-1.2.26 yasuaki$ cp scripts/makefile.darwin Makefile
Makefile の内容を修正する 【修正前】
# Where the zlib library and include files are located
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=../zlib
ZLIBINC=../zlib
【修正後】
# Where the zlib library and include files are located
ZLIBLIB=/usr/local/lib
ZLIBINC=/usr/local/include
#ZLIBLIB=../zlib
#ZLIBINC=../zlib
そのまま make するとエラーとなるので、一旦 configure を行ってから make する.
server3:libpng-1.2.26 yasuaki$ ./configure
server3:libpng-1.2.26 yasuaki$ make
server3:libpng-1.2.26 yasuaki$ sudo make install
4.libjpeg のインストール
libjpeg をインストールする前に、GDライブラリを展開したディレクトリに移り、一旦 configure を
行い、libtool というシェルスクリプトを libjpeg を展開したディレクトリにコピーする.
server3:gd-2.0.35 yasuaki$ cp libtool ../jpeg-6b/.
libjpegを展開したディレクトリに移り、 –enable-shared オプションを付けて configure してから
make , make install を行う.
( make install 時に “/usr/local/man/man1” ディレクトリが無いとエラーになるので、予め
作成しておくと良い.man ページのインストールエラーになっても特に問題はない.)
server3:gd-2.0.35 yasuaki$ cd ../jpeg-6b
server3:jpeg-6b yasuaki$ ./configure –enable-shared
server3:jpeg-6b yasuaki$ make
server3:jpeg-6b yasuaki$ sudo make install
5.GDのインストール
GDのインストール作業を行う前に、次のシンボリックリンクを貼る.
server3:gd-2.0.35 yasuaki$ sudo ln -s /usr/X11R6/include/fontconfig /usr/local/include
GDを展開したディレクトリで、 –with-freetype=/usr/X11R6 オプションを付けて configure、
make , make install する.
server3:gd-2.0.35 yasuaki$ ./configure –with-freetype=/usr/X11R6
server3:gd-2.0.35 yasuaki$ make
server3:gd-2.0.35 yasuaki$ sudo make install
以上の処理が無事終了すると、/usr/local/lib ディレクトリに GD 、libjepeg, libpng のシェアード
ライブラリが作成される.
sh-3.2# ls -la /usr/local/lib
total 4648
drwxr-xr-x 23 root wheel 782 Apr 28 23:52 .
drwxr-xr-x 10 root wheel 340 Apr 28 23:41 ..
-rwxr-xr-x 1 root wheel 274632 Apr 28 23:52 libgd.2.0.0.dylib
lrwxr-xr-x 1 root wheel 17 Apr 28 23:52 libgd.2.dylib -> libgd.2.0.0.dylib
-rw-r--r-- 1 root wheel 667240 Apr 28 23:52 libgd.a
lrwxr-xr-x 1 root wheel 17 Apr 28 23:52 libgd.dylib -> libgd.2.0.0.dylib
-rwxr-xr-x 1 root wheel 1071 Apr 28 23:52 libgd.la
-rwxr-xr-x 1 root wheel 140772 Apr 28 23:42 libjpeg.62.0.0.dylib
lrwxr-xr-x 1 root wheel 20 Apr 28 23:42 libjpeg.62.dylib -> libjpeg.62.0.0.dylib
-rw-r--r-- 1 root wheel 182584 Apr 28 23:42 libjpeg.a
lrwxr-xr-x 1 root wheel 20 Apr 28 23:42 libjpeg.dylib -> libjpeg.62.0.0.dylib
-rwxr-xr-x 1 root wheel 808 Apr 28 23:42 libjpeg.la
-rwxr-xr-x 1 root wheel 170032 Apr 28 23:30 libpng.3.26.0.dylib
lrwxr-xr-x 1 root wheel 19 Apr 28 23:30 libpng.3.dylib -> libpng.3.26.0.dylib
lrwxr-xr-x 1 root wheel 10 Apr 28 23:30 libpng.a -> libpng12.a
lrwxr-xr-x 1 root wheel 14 Apr 28 23:30 libpng.dylib -> libpng12.dylib
lrwxr-xr-x 1 root wheel 11 Apr 28 23:30 libpng.la -> libpng12.la
-rwxr-xr-x 1 root wheel 170520 Apr 28 23:30 libpng12.0.26.0.dylib
lrwxr-xr-x 1 root wheel 21 Apr 28 23:30 libpng12.0.dylib -> libpng12.0.26.0.dylib
-rw-r--r-- 1 root wheel 706008 Apr 28 23:30 libpng12.a
lrwxr-xr-x 1 root wheel 21 Apr 28 23:30 libpng12.dylib -> libpng12.0.26.0.dylib
-rwxr-xr-x 1 root wheel 818 Apr 28 23:30 libpng12.la
drwxr-xr-x 4 root wheel 136 Apr 28 23:30 pkgconfig
sh-3.2#
6.PHP5.2.5 のインストール
OSXServer ではインストール先やオプションの構成が一般的な PHPのインストールと異なっているので、
予め、次のコマンドでディレクトリ情報や構成オプションなどを確認しておいて下さい.
server3:php-5.2.5 yasuaki$ /usr/bin/php -i
上記のコマンドの出力情報を確認しながら、次のような構成オプションを付けて configure します.
server3:php-5.2.5 yasuaki$ ./configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --disae-dependency-tracking --with-apxs2=/usr/sbin/apxs
--with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid
--with-xml --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-dbx
--enable-sockets --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/etc
--sysconfdir=/private/etc --with-mysql-sock=/var/mysql --with-mysqli=/usr/bin/mysql_config
--with-mysql=/usr --with-openssl --with-xmlrpc --with-xsl=/usr --without-pear
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/X11R6
--with-gd=/usr/local
loading cache ./config.cache
checking for Cygwin environment... no
checking for mingw32 environment... no
checking for egrep... grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking host system type... powerpc-apple-darwin9.3.0
checking target system type... powerpc-apple-darwin9.3.0
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
途中省略
Thank you for using PHP.
Notice: Following unknown configure options were used:
--disable-dependency-tracking
--enable-trans-sid
--with-xml
--enable-dbx
Check './configure --help' for available options
注)上記の例では、表示の都合で改行を入れてありますが、実際は1行のコマンドです.
イタリック体の太字の部分が今回新たに加えた構成オプションです.幾つかの構成オプションが不明だと文句を
言われてしまいますが、無視して下さい.
後は、いつものように make, make install して下さい.この作業は結構時間が掛かります.
できれば make install する前に、 オリジナルの PHP ライブラリ /usr/libexec/apache2/libphp5.so を
どこか別な場所にバックアップしておいてください.
server3:php-5.2.5 yasuaki$ sudo make install
Installing PHP SAPI module: apache2handler
/usr/share/httpd/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1/build-1/libtool' libs/libphp5.so /usr/libexec/apache2
/usr/share/apr-1/build-1/libtool --mode=install cp libs/libphp5.so /usr/libexec/apache2/
cp libs/libphp5.so /usr/libexec/apache2/libphp5.so
Warning! dlname not found in /usr/libexec/apache2/libphp5.so.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/libexec/apache2/libphp5.so
[activating module `php5' in /private/etc/apache2/httpd.conf]
Installing PHP CLI binary: /usr/bin/
Installing PHP CLI man page: /usr/share/man/man1/
Installing build environment: /usr/lib/php/build/
Installing header files: /usr/include/php/
Installing helper programs: /usr/bin/
program: phpize
program: php-config
Installing man pages: /usr/share/man/man1/
page: phpize.1
page: php-config.1
Installing PDO headers: /usr/include/php/ext/pdo/
server3:php-5.2.5 yasuaki$
7.Apache の再起動
Server Admin Tool か、コマンドラインを用いて Apche サーバを再起動して下さい.
エラーがないかどうか Apache のログ出力を確認しておきましょう.
server3: yasuaki$ sudo apachectl graceful restart
8.PHP の情報確認
info.php などの名前で適当な場所に次の1行を記述したファイルを置き、実際に WEBブラウザから
info.php にアクセスしてPHPの詳しい情報を表示してみましょう.
<?php phpinfo(); ?>
以上簡単にGDライブラリをPHPに組み込む手順を紹介しました.参考までにGD組み込み後のphpinfo() の情報を載せておきます.