Kozupon.com    
 
 PHP3とPHP4をApacheに共存させる!


PHP3で作ったソースとPHP4で作ったソースを両方ともApacheのPHPインタプリタで実行したいと考え、インストールを試みた。PHP3とPHP4共にグラフィックライブラリを必要とするため、ライブラリも同時にコンパイルすることとした。OSは、以下の3つにインストールを試みたので、方法を掲載する。

Laser5Linux6.5
FreeBSD4.2R
Solaris8

この中で、Solaris8については少々厄介だったので、それも含め説明する。
また、ここではPostgreSQL7を使ったのでDBを使用することを前提として説明する。PostgreSQLのバージョンは、
postgresql-7.1.2 である。

php-4.0.6
php3.0.18
freeetype-1.3.1
gd-1.8.4
libpng-1.2.0
jpegsrc.v6b
zlib-1.1.3

ソースの解凍先は、全て/usr/local/srcとして説明する。


1.インストールをはじめる前に

(1) 既存のバイナリのアンインストール

インストールはソースをコンパイルするので、あらかじめ同じモジュールのバイナリがインストールされている場合は、アンインストールすること。

(2) Apacheの停止

重要 : Apacheが動いている場合は必ず止めておく。


2.zlibのコンバイル、インストール

# tar zxvf zlib-1.1.3.tar.gz
# cd zlib-1.1.3
# ./configure --enable-shared

エラーがなければ、

# make install


3.libpngのコンパイル、インストール

# tar zxvf libpng-1.2.0
# cd libpng-1.2.0

scriptsフォルダの中にMakefileがある為、シンボルリンクを張る(使用のOSに合わせてMakefileを選択すること)。この場合は、Linuxを選択している。

# ln -s scripts/makefile.linux Makefile
# make install


4.libjpegのコンパイル、インストール

# tar zxvf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# ./configure --enable-shared --enable-static

エラーがなければ、

# make install


5.freetypeのコンパイル、インストール

重要 : freetypeをインストールする前に、XFree86ライブラリがインストールされているか確認すること!これがないと、コンパイル中にエラーが出る。

# tar zxvf freetype-1.3.1.tar.gz
# cd freetype-1.3.1
# ./configure --enable-shared --enable-static

エラーがなければ、

# make

# make install


6.gdのコンパイル、インストール

# tar zxvf gd-1.8.4.tar.gz
# cd gd-1.8.4

Makefileを内容を以下のように編集する。

# vi Makefile
 
省略

INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11
-I/usr/local/include

を以下に訂正。

INCLUDEDIRS=-I. -I/usr/local/include/freetype -I/usr/include/X11 -I/usr/X11R6/include/X11
-I/usr/local/include

省略
 
# make install


7.PHP4のコンパイル、インストール

# tar zxvf php-4.0.6.tar.gz

# cd php-4.0.6

# ./configure --with-pgsql --enable-track-vars \
--with-apxs=/usr/local/apache/bin/apxs --with-mysql=no \
--enable-versioning --enable-trans-sid --with-gd=/usr/local \
--with-png-dir=/usr/local/src --with-jpeg-dir=/usr/local/src \
--with-zlib-dir=/usr/local/src --with-ttf --enable-mbstring \
--enable-mbstr-enc-trans

エラーがなければ。

# make

# make install

初期化ファイルを作成。カレントフォルダから、

# cp php.ini-dist /usr/local/lib/php.ini


8.PHP3のコンパイル、インストール

# tar zxvf php-3.0.18.tar.gz

# cd php-3.0.18

# ./configure --with-pgsql --enable-track-vars \
--with-apxs=/usr/local/apache/bin/apxs \
--enable-i18n --enable-mbregex --enable-versioning \
--with-gd=/usr/local --with-ttf

重要 : ここで、PHP4とPHP3の共有化のみそは、両方のパラメータに”--enable-versioning”をいれること!

エラーがなければ、

# make

# make install

初期化ファイルを作成。カレントフォルダから、

# cp php3.ini-dist /usr/local/lib/php3.ini

ここで、Solaris8の場合のみエラーが発生した。makeの時に以下のエラーである。

functions/php3_pgsql.h:46: libpq-fe.h: No such file or directory
functions/php3_pgsql.h:47: libpq/libpq-fs.h: No such file or directory
make: *** [internal_functions.o] Error 1

これは、単にヘッダのパスが見つからないと怒られている。したがって、以下のようにする。

# cp -R /usr/local/pgsql/include/* /usr/local/src/php-3.0.18/functions/

これで、一応makeエラーはなくなったが、今度は最終的にApacheが起動しない。まともなエラーログも出力されず動かないので、さすがにむかつき状態であきらめて以下の方法で再コンパイルを試みた

# make distclean

# ./configure --with-pgsql --enable-track-vars --with-apxs=/usr/local/apache/bin/apxs \
--enable-i18n --enable-mbregex --enable-versioning --without-gd

# make

# make install

つまり、Solaris8はPHP3のみグラフィックライブラリのインクルードをあきらめたのであった(T.T)。


9.httpd.confの編集

apacheのhttpd.confを編集する。

# cd /usr/local/apache/conf

# vi httpd.conf

省略

AddType application/x-tar .tgz
AddType image/x-icon .ico

AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps .php3s

省略

赤文字の部分を追加する。


10.ld.so.confの編集

ld.so.confの最後に以下のパスを追加する。

# vi /etc/ld.so.conf
 
省略
 
/usr/local/lib

/usr/local/pgsql/lib

編集が終わったら、以下を実行

# ldconfig


11.Apacheの再起動

# /usr/local/apache/bin/apachectl restart

以上


 
 
 



Copyright 2005 Kozupon.com.