PHP (Hypertext Preprocessor)

[ 戻る | トップページに戻る ]

概要

PHP とは、HTML 埋め込み型のサーバサイド・スクリプト言語である。 各種データベースとの連係機能が豊富。XML をサポートしているのも素敵! ;-)

URL

http://www.php.net/ (Official Site)
http://jp.php.net/ (国内ミラーサイト)
http://www.cityfujisawa.ne.jp/%7Elouis/apps/phpfi/ (PHP 日本語ページ)

インストール環境

Slackware 7.0 (Kernel 2.2.14 + glibc 2.1.2)
Plamo Linux 1.4.4 (Kernel 2.2.12 + libc5)
Plamo Linux 2.2.1 (Kernel 2.2.19 + glibc 2.2)

必要なもの

apache, Perl, GDBM (Option), OpenLDAP (Option), libxml(2) 2.2.7 以降 (Option), libxslt (Option)

バージョン

3.0.15-i18n-ja, 3.0.18-i18n-ja, 4.0.2, 4.0.6, 4.2.2, 4.3.1

インストール手順 (3.0.1x-i18n-ja)

実は、こっちの方が 4.0.2 より後にインストールを試みたのだが...。
$ tar xvfz php-3.0.15-i18n-ja.tar.gz
$ cd php-3.0.15-i18n-ja
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --with-pgsql
              --with-jpeg-dir=/usr/lib --with-xpm-dir=/usr/X11R6/lib --enable-i18n
              --enable-mbregex --enable-track-vars --enable-versioning
(snip)
==================================================================
WARNING: Your /usr/local/apache/bin/apxs script is most likely broken.

Please go read http://www.php.net/FAQ.php3#4.11 and make the
changes described there and try again.
==================================================================

Warning? ええい。とりあえず無視だ。
$ make
(snip)
ranlib libmodphp3-so.a
/usr/local/apache/bin/apxs -c -o libphp3.so -I. -I. -Wl,'-rpath /usr/local/pgsql/lib'
    ./mod_php3.c libmodphp3-so.a -L/usr/local/lib -lpng -lz -lgd -L/usr/local/pgsql/lib -lpq -lgdbm
    -lgdbm  pcrelib/libpcre.a -lm -ldl -lcrypt  -lresolv  -Lpcrelib -lpcre
gcc -DLINUX=2 -DMOD_SSL=206106 -DUSE_HSREGEX -DEAPI -DUSE_EXPAT -I../lib/expat-lite -DNO_DL_NEEDED
    -I/usr/local/apache/include -I. -I. -c ./mod_php3.c -o libphp3.so mod_php3.o
    libmodphp3-so.a -L/usr/local/lib -lpng -lz -lgd -L/usr/local/pgsql/lib -lpq -lgdbm -lgdbm
    pcrelib/libpcre.a -lm -ldl -lcrypt -lresolv -Lpcrelib -lpcre -rpath /usr/local/pgsql/lib 
apxs:Break: Command failed with rc=16711680
make: *** [libphp3.so] Error 1

ぬう。apxs: Break ??? やはり先の Warning を解決しないと行けないのかな? 先の警告に示されたページをよく読むと、apxs (/usr/local/apache/bin/apxs) を 以下のように修正しろとあるので、それに従い修正する。
# 現状では該当エントリはすべて '= q()'; となっていた。
my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
                        ~~~~~~~~~~~~~~~~~~~~~~~ 修正
my $CFG_LD_SHLIB      = 'gcc';                   # substituted via Makefile.tmpl
                        ~~~~~ 修正
my $CFG_LDFLAGS_SHLIB = q(-shared);              # substituted via Makefile.tmpl
                          ~~~~~~~ 修正

再度 configure からやり直し。今度は無事 Warning が表示されず、コンパイルも 正常に終了した。
# 注) --with-xml ではパーサに expat を使用するが apache 1.3.7 以降であれば
# apache に組み込まれた expat を使用するので、別途インストールする必要はない。
$ make distclean
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --with-pgsql
              --with-jpeg-dir=/usr/lib --with-xpm-dir=/usr/X11R6/lib --enable-i18n
              --enable-mbregex --enable-track-vars --enable-versioning --with-ttf --with-xml
$ make
$ su
# make install
# cp php3.ini-dist /usr/local/lib/php3.ini
# exit

最後に Apache の設定ファイル (httpd.conf) を編集して、apache を再起動すれば おしまい。httpd.conf の編集内容は以下の通り。
<IfModule mod_dir.c>
    DirectoryIndex index.html index.php3
                              ~~~~~~~~~~ 追加
</IfModule>
(snip)
    # For example, the PHP 3.x module (not part of the Apache distribution - see
    # http://www.php.net) will typically use:
    #
    AddType application/x-httpd-php3 .php3         <--- 行頭の '#' を削除
    AddType application/x-httpd-php3-source .phps  <--- 行頭の '#' を削除

インストール手順 (4.0.2)

$ tar xvfz php-4.0.2.tar.gz
$ cd php-4.0.2
$ ./configure --with-apache --with-apxs --with-gdbm --with-gd --with-pgsql
creating cache ./config.cache
configure: error: --with-apache and --with-apxs cannot be used together

あら? ふむ、DSO (Dynamic Shared Object) としてインストールする場合は --with-apache はいらないのか。ではやり直し。
$ ./configure --with-apxs --with-gdbm --with-gd --with-pgsql
(snip)
Configuring SAPI modules
checking for AOLserver support... no
checking for Apache module support via DSO through APXS... 
./configure: apxs: command not found
configure: error: Sorry, I cannot run apxs. Either you need to install Perl or you need to pass
           the absolute path of apxs by using --with-apxs=/absolute/path/to/apxs

むむ。apxs を見付けられないらしい。ちゃんとパスを指定して再度やり直し。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --with-pgsql
(snip)
Configuring SAPI modules
checking for AOLserver support... no
checking for Apache module support via DSO through APXS... 
Usage: apxs -g [-S =] -n 
       apxs -q [-S =]  ...
       apxs -c [-S =] [-o ] [-D [=]]
               [-I ] [-L ] [-l ] [-Wc,]
               [-Wl,]  ...
       apxs -i [-S =] [-a] [-A] [-n ]  ...
       apxs -e [-S =] [-a] [-A] [-n ]  ...
configure: error: Sorry, I cannot run apxs. Either you need to install Perl or you need to pass
           the absolute path of apxs by using --with-apxs=/absolute/path/to/apxs

どして?? configure スクリプトを調べてみると、以下の部分で apxs -q の実行結果が 1 (False) として帰ってくるのが原因らしい。
    if $APXS -q CFLAGS >/dev/null 2>&1; then
      :
    else
      echo "$ac_t""" 1>&6
      $APXS
      { echo "configure: error: Sorry, I cannot run apxs. Either you need to install Perl or
              you need to pass the absolute path of apxs by using
              --with-apxs=/absolute/path/to/apxs" 1>&2; exit 1; }
    fi 

CFLAGS に $ が付いていないのが変な気もするが、とりあえず直接の原因は apxs -q CFLAGS を実行した時に以下のエラーがでるためらしい。 あちゃ。apache が DSO 対応じゃなかったのね。
apxs:Error: Sorry, no DSO support for Apache available
apxs:Error: under your platform. Make sure the Apache
apxs:Error: module mod_so is compiled into your server
apxs:Error: binary `/usr/local/apache/bin/httpd'.

apache を DSO 対応 (configure --enable-module=so) でコンパイルし直してから、 やり直し。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --with-pgsql
(snip)
configure: warning: If configure fails try --with-jpeg-dir=<DIR>
checking for gdImageCreateFromJpeg in -lgd... no
checking for libXpm (needed by gd-1.8+)... no
configure: warning: If configure fails try --with-xpm-dir=<DIR>
(snip)

apxs は Ok 。だが今度は JPEG と Xpm ライブラリを認識していないので、 configure オプションを追加。
# 3.0.15-i18n-ja の所で示した apxs の修正を行っておくこと。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --with-pgsql
              --with-jpeg-dir=/usr/lib --with-xpm-dir=/usr/X11R6/lib
(snip)
+--------------------------------------------------------------------+
|                       *** ATTENTION ***                            |
|                                                                    |
| Something is likely to be messed up here, because the configure    |
| script was not able to detect a simple feature on your platform.   |
| This is often caused by incorrect configuration parameters. Please |
| see the file debug.log for error messages.                         |
|                                                                    |
| If you are unable to fix this, send the file debug.log to the      |
| php-install@lists.php.net mailing list and include appropiate      |
| information about your setup.                                      |
+--------------------------------------------------------------------+
|                        *** WARNING ***                             |
|                                                                    |
| You chose to compile PHP with the built-in MySQL support.  If you  |
| are compiling a server module, and intend to use other server      |
| modules that also use MySQL (e.g, mod_auth_mysql, PHP 3.0,         |
| mod_perl) you must NOT rely on PHP's built-in MySQL support, and   |
| instead build it with your local MySQL support files, by adding    |
| --with-mysql=/path/to/mysql to your configure line.                |
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

これでとりあえず configure は OK 。ではコンパイル。
$ make
(snip)
/bin/sh /usr/local/src/php-4.0.2/libtool --silent --mode=compile gcc -I.
        -I/usr/local/src/php-4.0.2/main -I/usr/local/src/php-4.0.2 -I/usr/local/src/php-4.0.2/main
        -I/usr/local/apache/include -I/usr/local/src/php-4.0.2/Zend -I/usr/local/src/php-4.0.2
        -I/usr/local/src/php-4.0.2/ext/mysql/libmysql -I/usr/local/src/php-4.0.2/ext/xml/expat/xmltok
        -I/usr/local/src/php-4.0.2/ext/xml/expat/xmlparse  -DEAPI=1 -DXML_BYTE_ORDER=12
        -g -O2 -c internal_functions.c
In file included from internal_functions.c:40:
/usr/local/src/php-4.0.2/ext/gd/php_gd.h:33: gd.h: No such file or directory
make[2]: *** [internal_functions.lo] Error 1
make[2]: Leaving directory `/usr/local/src/php-4.0.2/main'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/php-4.0.2/main'
make: *** [all-recursive] Error 1

にゅ。今度は gd.h が見付からないのか...しまった。 GD は入れたつもりだったが別のマシンだった。 GD をインストールしてから、再度 make を実行。
$ make
(snip)
make[4]: Entering directory `/usr/local/src/php-4.0.2/ext/mysql/libmysql'
/bin/sh /usr/local/src/php-4.0.2/libtool --silent --mode=compile gcc -I.
        -I/usr/local/src/php-4.0.2/ext/mysql/libmysql -I/usr/local/src/php-4.0.2
        -I/usr/local/src/php-4.0.2/main -I/usr/local/apache/include -I/usr/local/src/php-4.0.2/Zend
        -I/usr/local/src/php-4.0.2 -I/usr/local/src/php-4.0.2/ext/mysql/libmysql
        -I/usr/local/src/php-4.0.2/ext/xml/expat/xmltok -I/usr/local/src/php-4.0.2/ext/xml/expat/xmlparse
        -DEAPI=1 -DXML_BYTE_ORDER=12 -g -O2  -c libmysql.c
In file included from libmysql.c:11:
global.h:194: warning: redefinition of `uint'
/usr/include/sys/types.h:130: warning: `uint' previously declared here
global.h:195: warning: redefinition of `ushort'
/usr/include/sys/types.h:129: warning: `ushort' previously declared here
In file included from libmysql.c:14:
m_string.h:165: parse error before `__extension__'
m_string.h:165: parse error before `&&'
make[4]: *** [libmysql.lo] Error 1
make[4]: Leaving directory `/usr/local/src/php-4.0.2/ext/mysql/libmysql'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/src/php-4.0.2/ext/mysql/libmysql'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/php-4.0.2/ext/mysql'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/php-4.0.2/ext'
make: *** [all-recursive] Error 1

うーむ。なかなか手強いね。 redefine は無視するとして m_string.h の parse error って何だ。 該当行 (165 行) に '__extension__' なんてないぞ??

*** とりやめ ***

インストール手順 (4.0.6)

最初に注意事項。 configure が実際に動き出す (画面に結果が表示され出す) までに、 止まってしまったかと思うほどの時間がかかるので、焦らず待つべし。
$ tar xvfz php-4.0.6.tar.gz
$ cd php-4.0.6
$ ./configure --with-apxs --with-gdbm --with-gd --enable-gd-native-ttf --with-ttf --with-pgsql \
              --with-iodbc --with-openssl --enable-mbstring --enable-mbstr-enc-trans \
              --enable-trans-sid --with-dom --enable-xslt --with-ldap
(snip)
Configuring SAPI modules
checking for AOLserver support... no
checking for Apache module support via DSO through APXS... 
./configure: apxs: command not found
Sorry, I was not able to successfully run APXS.  Possible reasons:
1.  Perl is not installed;
2.  Apache was not compiled with DSO support (--enable-module=so);
3.  'apxs' is not in your path.
configure: error: ;

ありゃ。apxs のパスを指定する必要があるのね。ではこう。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap
(snip)
Configuring extensions
checking if the location of ZLIB install directory is defined... no
checking whether to include ZLIB support... no
(snip)
checking for DOM support... yes
checking for DOM in default path... found in /usr/local
checking for libxml version... configure: error: libxml version 2.2.7 or greater required.

うーん、zlib が認識されていないのは --with-zlib で指定すればいいのかな?
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib=/usr/lib
(snip)
Configuring extensions
checking if the location of ZLIB install directory is defined... no
checking whether to include ZLIB support... yes
configure: error: Cannot find libz

うーむ。libz.so は /usr/lib にあるのだが、libz.a は /usr/X11R6/lib なんだよな。 こっちしか認識しないのか?
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib=/usr/X11R6/lib

これもダメ。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib=/usr/X11R6/lib --with-zlib-dir=/usr/include

これもダメ。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib --with-zlib-dir=/usr
(snip)
Configuring extensions
checking if the location of ZLIB install directory is defined... yes
checking whether to include ZLIB support... yes
(snip)
checking for DOM support... yes
checking for DOM in default path... found in /usr/local
checking for libxml version... configure: error: libxml version 2.2.7 or greater required.

おお。これで行ける〜。(^^
後は、libxml か。libxml2-2.4.6 が入っているのだが、libxml2 だとダメなのかなぁ。 以前 libxml2-2.2.3 をインストールしていたのが悪いのかなぁ。 ちなみに libxml2-2.2.3 はアンインストールしていない。
調べてみると...。
$ ls -l /usr/local/lib/libxml*
libxml.a
libxml.la*
libxml.so -> libxml.so.2.2.3*
libxml.so.2 -> libxml.so.2.2.3*
libxml.so.2.2.3*
libxml2.a
libxml2.la*
libxml2.so -> libxml2.so.2.4.6*
libxml2.so.2 -> libxml2.so.2.4.6*
libxml2.so.2.4.6*

げ、どうやら libxml2-2.2.3 だと libxml.* になって、 libxml2-2.4.6 だと libxml2.* になるらしい。む〜。
これでどうだ。
$ su
# rm libxml.*
# ln -s libxml2.a libxml.a
# ln -s libxml2.la libxml.la
# ln -s libxml2.so.2.4.6 libxml.so
# ln -s libxml2.so.2.4.6 libxml.so.2
# ldconfig
# exit
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib --with-zlib-dir=/usr
(snip)
checking for DOM support... yes
checking for DOM in default path... found in /usr/local
checking for libxml version... configure: error: libxml version 2.2.7 or greater required.

ダメ。むむむ。これは libxml2-2.2.7 を入れろってことか。
ふと、lib だけじゃなく include もあるよなぁ、と気付いた (遅い > をれ) 。 調べてみると...。
/usr/local/include/libxml/      <-- libxml2-2.2.3
/usr/local/include/libxml2/     <-- libxml2-2.4.6

これか。しかもディレクトリ構造が違うし...。こんなやり方で吸収できるかな。
$ su
# cd /usr/local/include
# rm -rf libxml
# ln -s libxml2/libxml/ libxml
# rm -rf /usr/local/lib/libxml.*
# exit
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib --with-zlib-dir=/usr
(snip)
checking for DOM support... yes
checking for DOM in default path... found in /usr/local
checking for libxml version... >= 2.2.7
(snip)
checking whether to include GD support... yes
checking whether to enable truetype string function in gd... no
checking for the location of libjpeg... no
not set. If configure fails try --with-jpeg-dir=<DIR>
checking for the location of libpng... no
If configure fails try --with-png-dir=<DIR> and --with-zlib-dir=<DIR>
checking for the location of libXpm... no
If configure fails try --with-xpm-dir=<DIR>
checking for freetype(2)... no
If configure fails try --with-freetype-dir=<DIR>
checking whether to include include FreeType 1.x support... yes
checking whether to include T1lib support... no
checking for gdImageString16 in -lgd... no
checking for gdImagePaletteCopy in -lgd... no
checking for gdImageCreateFromPng in -lgd... no
checking for gdImageCreateFromGif in -lgd... no
checking for gdImageWBMP in -lgd... no
checking for gdImageCreateFromJpeg in -lgd... no
checking for gdImageCreateFromXpm in -lgd... no
checking for gdImageCreateTrueColor in -lgd... no
checking for gdImageSetTile in -lgd... no
checking for gdImageSetBrush in -lgd... no
checking for gdImageStringFTEx in -lgd... no
checking for gdImageColorClosestHWB in -lgd... no
checking for gdImageColorResolve in -lgd... no
checking for gdImageGifCtx in -lgd... no
(snip)
checking for XML support... yes
checking external libexpat install dir... no
checking whether to enable xslt support... yes
checking whether to enable the XSLT Sablotron backend... no
checking libexpat dir for Sablotron XSL support... no
configure: error: not found. Please re-install the  distribution

ようやく、libxml は通った。 次は、jpeg, png, xpm, freetype と XSLT が認識できていない。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib \
              --with-xpm-dir=/usr/X11R6/lib --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/lib
(snip)
checking for the location of libjpeg... yes
checking for jpeg_read_header in -ljpeg... yes
checking for the location of libpng... yes
checking for png_info_init in -lpng... yes
checking for the location of libXpm... yes
checking for XpmFreeXpmImage in -lXpm... no
configure: error: libXpm.(a|so) or libX11.(a|so) not found!

むー。なぜ〜。わーかーらーん。 いいや。XPM なんぞ使わないので、オプションから外してしまうことにする。(^^;
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib \
              --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/lib
(snip)
checking for the location of libXpm... no
If configure fails try --with-xpm-dir=
checking for freetype(2)... yes
configure: error: freetype2 not found!

ぎょ。freetype2 なのか。 freetype2 のインストール後、再トライ。 なお、--with-freetype-dir に指定するパスが変わっていることに注意。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt --with-ldap \
              --with-zlib --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib \
              --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/local/lib
(snip)
checking for XML support... yes
checking external libexpat install dir... no
checking whether to enable xslt support... yes
checking whether to enable the XSLT Sablotron backend... no
checking libexpat dir for Sablotron XSL support... no
configure: error: not found. Please re-install the  distribution

ダメ〜。 何故だか、configure には --with-expat-dir が 2 つあって、--with-xslt-dir が ないのだが...。あると信じて...。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --enable-xslt \
              --with-xslt-dir=/usr/local/lib --with-ldap --with-zlib --with-zlib-dir=/usr \
              --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-tiff-dir=/usr/lib \
              --with-freetype-dir=/usr/local/lib
(snip)
checking for XML support... yes
checking external libexpat install dir... no
checking whether to enable xslt support... yes
checking whether to enable the XSLT Sablotron backend... no
checking libexpat dir for Sablotron XSL support... no
configure: error: not found. Please re-install the  distribution

やっぱりダメ〜。わからん。XSLT 外す〜。
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --with-ldap --with-zlib \
              --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib \
              --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/local/lib
$ make
(snip)
In file included from internal_functions.c:35:
/usr/local/src/php-4.0.6/ext/gd/php_gd.h:33: gd.h: No such file or directory
make[2]: *** [internal_functions.lo] エラー 1
make[2]: 出ます ディレクトリ `/usr/local/src/php-4.0.6/main'
make[1]: *** [all-recursive] エラー 1
make[1]: 出ます ディレクトリ `/usr/local/src/php-4.0.6/main'
make: *** [all-recursive] エラー 1

むむ。何故 gd.h がない!? gd 1.8.4 インストール後、再トライ。
$ make
(snip)
/bin/sh /usr/local/src/php-4.0.6/libtool --silent --mode=compile gcc -I. \
        -I/usr/local/src/php-4.0.6/ext/gd -I/usr/local/src/php-4.0.6/main -I/usr/local/src/php-4.0.6 \
        -I/usr/local/apache/include -I/usr/local/src/php-4.0.6/Zend -I/usr/local/ssl/include \
        -I/usr/local/include -I/usr/local/include/freetype2/freetype \
        -I/usr/local/src/php-4.0.6/ext/mysql/libmysql -I/usr/local/include \
        -I/usr/local/src/php-4.0.6/ext/xml/expat/xmltok \
        -I/usr/local/src/php-4.0.6/ext/xml/expat/xmlparse -I/usr/local/src/php-4.0.6/TSRM \
        -DLINUX=22 -DNO_DBM_REWRITEMAP -DMOD_SSL=208105 -DUSE_HSREGEX -DEAPI -DUSE_EXPAT \
        -DSUPPORT_UTF8 -DXML_BYTE_ORDER=12 -g -O2  -c gd.c
gd.c:95: conflicting types for `gdIOCtx'
/usr/local/include/gd_io.h:18: previous declaration of `gdIOCtx'
make[3]: *** [gd.lo] エラー 1
make[3]: 出ます ディレクトリ `/usr/local/src/php-4.0.6/ext/gd'
make[2]: *** [all-recursive] エラー 1
make[2]: 出ます ディレクトリ `/usr/local/src/php-4.0.6/ext/gd'
make[1]: *** [all-recursive] エラー 1
make[1]: 出ます ディレクトリ `/usr/local/src/php-4.0.6/ext'
make: *** [all-recursive] エラー 1

configure 終了後に、GD をインストールしたため、うまく認識されていないらしい。 最初からやり直すことで解決。
$ make clean
$ make distclean
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd --enable-gd-native-ttf \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --with-ldap --with-zlib \
              --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib \
              --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/local/lib
$ make
$ su
# make install
# exit

/usr/local/apache/conf/httpd.conf $r0J2<$N$h$&$K=$@5!#
    # And for PHP 4.x, use:
    #
    AddType application/x-httpd-php .php           <--- 行頭の # を削除
    AddType application/x-httpd-php-source .phps   <--- 行頭の # を削除

では、いよいよ起動してみる。
# /usr/local/apache/bin/apachectl restart
/usr/local/apache/bin/apachectl restart: httpd not running, trying to start
Syntax error on line 205 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/libphp4.so into server: libpq.so.2: \
       cannot load shared object file: No such file or directory
/usr/local/apache/bin/apachectl restart: httpd could not be started

ん? Syntax error?? 該当行 (205 行目) を見てみると...
LoadModule php4_module        libexec/libphp4.so

うーむ。libpq.so.* は間違いなく /usr/local/pgsql/lib/ にある。 とゆー事は、単にパスの問題だね。 /etc/ld.so.conf に /usr/local/pgsql/lib を追加し、ldconfig を実行後、再トライ。
# ldconfig
# /usr/local/apache/bin/apachectl start
Syntax error on line 205 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/libphp4.so into server: /usr/local/apache/libexec/libphp4.so: undefined symbol: TT_Open_Face
/usr/local/apache/bin/apachectl start: httpd could not be started

今度は、TT_Open_Face ? これって何の関数? 調べてみると libgd.a に含まれるものらしい。が、その実態がどこにあるのか わからない。freetype っぽいのだが...。
げげ。freetype2 じゃなく freetype (libttf.*) に含まれる関数らしい。 freetype2 って freetype が必要なのか!? でも、Plamo では freetype 1.x はデフォルトで入っているのだが。

わからん。configure から --enable-gd-native-ttf を除いてやってみる。
$ make clean
$ make distclean
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd \
              --with-ttf --with-pgsql --with-iodbc --with-openssl --enable-mbstring \
              --enable-mbstr-enc-trans --enable-trans-sid --with-dom --with-ldap --with-zlib \
              --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib \
              --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/local/lib
$ make
$ su
# make install

ダメ。configure --help を見ると...
  --with-ttf[=DIR]          GD: Include FreeType 1.x support

ふむ。という事は、freetype に含まれる TT_Open_Face を使おうとしているのは これが原因か。
configure から --with-ttf を除く。 --enable-gd-native-ttf は復活させる。 また FTP サポートを追加する。
$ make clean
$ make distclean
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-gdbm --with-gd \
              --enable-gd-native-ttf --with-pgsql --with-iodbc --with-openssl \
              --enable-mbstring --enable-mbstr-enc-trans --enable-trans-sid --with-dom \
              --with-ldap --with-zlib --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib \
              --with-png-dir=/usr/lib --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/local/lib --enable-ftp
$ make
$ su
# make install
# /usr/local/apache/bin/apachectl start

うーむ。これもダメ。これでいいのかよく分からないのだが、 GD を freetype の関数 (TT_Open_Face) を含まないように再コンパイル。その後、PHP を再コンパイル。
$ make clean
$ make
$ su
# make install
# /usr/local/apache/bin/apachectl start
# exit

ようやく出来た〜。

インストール手順 (4.2.2)

まずはコマンドライン版から。
$ bzip2 -dc xvfz php-4.2.2.tar.bz2 | tar xvf -
$ cd php-4.2.2
$ ./configure --enable-mbstring --enable-mbstr-enc-trans --with-pgsql --without-mysql \
              --enable-force-cgi-redirect --enable-trans-sid --with-db
$ make
$ su
# make install
# exit
$ make distclean

次は Apache モジュール版。
$ make distclean
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-db --with-gd \
              --enable-gd-native-ttf --with-pgsql --without-mysql --with-iodbc --with-openssl \
              --enable-mbstring --enable-mbstr-enc-trans --enable-trans-sid --with-dom \
              --with-ldap --with-zlib --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib \
              --with-png-dir=/usr/lib --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/local/lib \
              --enable-ftp --enable-memory-limit
$ make
$ su
# make install
# cp php.ini-recommended /usr/local/lib/php.ini
# /usr/local/apache/bin/apachectl start
# exit

インストール手順 (4.3.1)

4.3.0 からは Apache モジュール版を作れば、自動的に CLI 版も作られるようなので、 特に CGI 版をコンパイルはしないことにする。
$ bzip2 -dc php-4.3.1.tar.bz2 | tar xvf -
$ cd php-4.3.1
$ ./configure --with-apxs=/usr/local/apache/bin/apxs --with-db --with-gd \
              --enable-gd-native-ttf --with-pgsql --without-mysql --with-iodbc --with-openssl \
              --enable-mbstring --enable-mbstr-enc-trans --enable-trans-sid --with-dom \
              --with-ldap --with-zlib --with-zlib-dir=/usr --with-jpeg-dir=/usr/lib \
              --with-png-dir=/usr/lib --with-tiff-dir=/usr/lib --with-freetype-dir=/usr/local/lib \
              --enable-ftp --enable-memory-limit
$ make
$ su
# make install
# cp php.ini-recommended /usr/local/lib/php.ini
# /usr/local/apache/bin/apachectl start
# exit

[ 戻る | トップページに戻る ]