本節では、構築時に発生する多くの一般的なエラーを集めたものです。
configure.inからconfigureスクリプトを生成するためには、GNU autoconfパッケージが必要です。CVSサーバからソースを入手した後、 最上位のディレクトリで./buildconfを実行して下 さい。(また、configureに --enable-maintainer-modeオプションを付けて実 行した場合以外は、configureスクリプトはconfigure.inファイルが更 新された際に自動的に再構築を行いません。このため、configure.inが 変更された場合には忘れずに手動で再構築を行う必要があります。 再構築の際に行われることの1つは、configureまたはconfig.statusを 実行した後、Makefileの中の@VARIABLE@のような物を見つけることです。)
configure/setupスクリプトにApacheソースツリーの最上位の場所を指 定する必要があります。これは、' --with-apache=/path/to/apache'を指定するので あって、'--with-apache=/path/to/apache/src'で はないということです。
Cプリプロセッサおよびリンカに次のように追加でフラグを指定するこ とにより、configureスクリプトがヘッダファイルまたはライブラリを 標準以外の場所で探すことが可能となります。
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
bisonのバージョンを更新する必要があります。最新版は、 ftp://ftp.gnu.org/pub/gnu/bison/にあります。
古いバージョンのmakeには、functionsディレクトリにあるファイルの コンパイルされたものを同じディレクトリに正しく入れないものがあり ます。"cp *.o functions"を試しに実行してから 'make' を再度実行し、解決されるか確認して下さ い。解決される場合には、GNU makeの最近のバージョンに更新するべき です。
最後に適切なライブラリが全てインクルードされているかどうか確認し て下さい。よくあるのは、'-ldl'や指定したデータベースのサポート機 能に必要なライブラリの指定が欠けているというものです。
Apache 1.2.xとリンクする場合には、適当な情報をConfigurationファ イルのEXTRA_LIBSの行に追加し、Apacheの Configureスクリプトを再度 実行したかどうかを確認して下さい。より詳細な情報については、配布 ファイルに付属するファイル INSTALLを参照下 さい。
何名かの人からApacheとリンクする際に' libphp4.a'の直後に'-ldl'を追加する必要があ ることも報告されています。
この手順は実際には非常に簡単です。以下の手順に注意深く従って下さ い。
http://www.apache.org/dist/から最新 のApache 1.3配布ファイルを取得して下さい。
これをどこか、例えば、 /usr/local/src/apache-1.3で ungzip、untarして下さい。
まず、 ./configure --with-apache=/<path>/apache-1.3を実行し、PHP をコンパイルして下さい。 (<path> の部分は実際のapache-1.3ディレクトリのパスに置 き換えて下さい)
'make' を実行した後、'make install'を実行して下さい。これにより、PHPが構築され、 必要なファイルがApacheのソースツリーにコピーされます。
ディレクトリを /<path>/apache-1.3/srcに移動し、 Configurationファイルを編集して下さい。 このファイルに以下を追加して下さい。: AddModule modules/php4/libphp4.a
'./Configure' を実行した後、' make'を実行して下さい。
以上の手順によりPHP対応のhttpdバイナリが構築できました。
注意: : Apache の新しい ./configureスクリプトを使用することも可能です。 Apache配布ファイルのREADME.configureファイル の指示を参照下さい。また、PHP配布ファイルの INSTALL ファイルも参照下さい。
これは、何らかの理由によりPHPモジュールが起動していないことを意 味しています。助けを求める質問を行う前にまず以下を確認下さい。
実行しているhttpdバイナリが構築したばかりの新しいhttpdバイナ リであることを確認して下さい。確認を行うには以下のように入力 します。 /path/to/binary/httpd -l
mod_php3.c または mod_php4.c がリストの中にない場合、正し いバイナリが実行されていません。正しいバイナリを見つけて、イ ンストールして下さい。
Apache .conf ファイルの1つに正しいMIME型 が追加されていることを確認して下さい。これは以下のようになり ます。 AddType application/x-httpd-php3 .php3 (PHP 3の場合)
または AddType application/x-httpd-php .php (PHP 4の場合)
また、このAddTypeの行が、 <Virtualhost> または <Directory> ブロックの中に隠 されて、テスト用のスクリプトの場所に適用できていないようなこ とがないことを確認して下さい。
最後に、デフォルトのApache設定ファイルの場所はApache 1.2と Apache 1.3の間で変更されています。AddTypeの行を追加した設定ファ イルが実際に読み込まれていることを確認して下さい。このファイ ルが正しく読み込まれている場合には、明らかな構文エラーを httpd.confファイルの中に書き込んでしまったり、何らかの明らか な変更があった可能性があります。
9. --activate-module=src/modules/php4/libphp4.a と書いてありますが、ファイルがありません。このため、 --activate-module=src/modules/php4/libmodphp4.aに 変更しましたが、やはりだめです。何が起きているのでしょう?
libphp4.aファイルはこの時点では存在しない、ということに気をつけて下さい。 このファイルは、Apacheの構築時に自動的に作成されます。
10. --activate-module=src/modules/php4/libphp4.a を指定し、PHPを静的モジュールとして組み込んでApacheを構築しよう とした際に、システムがANSI対応ではないというエラーを発生します。
Apacheのこのエラーメッセージは紛らわしく、より新しいバージョンで は修整されています。
ここでは、確認すべきことが3点あります。まず、何らかの理由により、 Apacheがapxs Perlスクリプトを構築する際に適当なコンパイラやフラ グ変数を付けないで構築されてしまうことが時々あります。 使用するapxsの場所を見つけたら('which apxs'コマンドを試してみて ください。/usr/local/apache/bin/apxsまたは/usr/sbin/apxs等にあり ます)、以下の行を確認して下さい。
my $CFG_CFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl my $CFG_LD_SHLIB = ' '; # substituted via Makefile.tmpl my $CFG_LDFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl |
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 |
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install |
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install |
インストール時に'make'を行っている際、以下のようなエラーを発生す るとした場合、
microtime.c: In function `php_if_getrusage': microtime.c:94: storage size of `usg' isn't known microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function) microtime.c:97: (Each undeclared identifier is reported only once microtime.c:97: for each function it appears in.) microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function) make[3]: *** [microtime.lo] Error 1 make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/master/php-4.0.1/ext' make: *** [all-recursive] Error 1 |
あなたのシステムは壊れています。使用しているglibcと同じバージョンの glibc-develパッケージをインストールして、/usr/include ファイルを修正 する必要があります。この問題は、PHPの動作とは全く関係ありません。 これを示すには、次のような簡単なテストを行ってみて下さい。
$ cat >test.c <<X #include <sys/resource.h> X $ gcc -E test.c >/dev/null |