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() の情報を載せておきます.
 
				