本節は、構築時に発生する多くの一般的なエラーを集めたものです。
configure.inからconfigureスクリプトを生成するためには、GNU
autoconfパッケージが必要です。Gitサーバーからソースを入手した後、
最上位のディレクトリで./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 ではないということです。
./configure
)
以下のようなエラーに遭遇しました。
インストールの説明をよく読み、 PHPのコンパイルにはflexとbisonの両方が必要であることに留意してください。 ソースかあるいはRPMのようなパッケージからbisonとflexを インストールしてください。
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のバージョンを更新する必要があります。最新版は、 » http://www.gnu.org/software/bison/bison.htmlにあります。
古いバージョンのmakeには、functionsディレクトリにあるファイルの コンパイルされたものを同じディレクトリに正しく入れないものがあり ます。cp *.o functionsを試しに実行してから make を再度実行し、解決されるか確認して下さ い。解決される場合には、GNU makeの最近のバージョンに更新するべき です。
最後に適切なライブラリが全てインクルードされているかどうか 確認してください。よくあるのは、'-ldl' や 指定したデータベースのサポート機能に必要なライブラリの指定が欠けているというものです。
何名かの人から、Apache とリンクする際に 'libphp4.a' の直後に '-ldl' を追加する必要があることも報告されています。
これは、何らかの理由によりPHPモジュールが起動していないことを意 味しています。助けを求める質問を行う前にまず以下を確認ください。
/path/to/binary/httpd -l
mod_php4.c がリストの中にない場合、正し
いバイナリが実行されていません。正しいバイナリを見つけて、イ
ンストールしてください。
Apache .conf
ファイルの1つに正しいMIME型
が追加されていることを確認してください。これは以下のようになります。
AddType application/x-httpd-php .php
また、このAddTypeの行が、
<Virtualhost> または <Directory> ブロックの中に隠
されて、テスト用のスクリプトの場所に適用できていないようなこ
とがないことを確認してください。
--activate-module=src/modules/php4/libphp4.a
と書いてありますが、ファイルがありません。このため、
--activate-module=src/modules/php4/libmodphp4.a
に
変更しましたが、やはりだめです。何が起きているのでしょう?
libphp4.aファイルはこの時点では存在しない、ということに気をつけてください。 このファイルは、Apacheの構築時に自動的に作成されます。
--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
RUSAGE_
関連で多くのエラーを発生します。
インストール時に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
make
の最中に以下のようなエラーが出る:
ext/mysql/libmysqlclient/my_tempnam.o(.text+0x46): In function
my_tempnam': /php4/ext/mysql/libmysqlclient/my_tempnam.c:103: the
use of tempnam' is dangerous, better use mkstemp'
何がおかしいのか?
まず、これはWarning
であって致命的な
エラーではないと認識することが重要です。make
の
最後のほうでこの出力がしばしば見られるため致命的なエラーと
思われがちですがそうではありません。もちろん、Warningが
起きるとコンパイラが停止するような設定をしている場合は別です。
また、MySQLサポートはデフォルトで構築されることにも
留意してください。
注意:
PHP4.3.2以降、ビルド(make)完了後に以下のようなテキストが出る ことがあります:
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
現在インストールされているPHPを構築した時のディレクトリにある config.nice ファイルを見るか、もしもうそのディレクトリが無い場合は
<?php phpinfo(); ?>
リンクしたGDライブラリとPHPが同じライブラリ(例えばlibpng)に依存しているか どうかを確認してください。
PHP のコンパイル時に 非 GNU ツールを使用すると問題を引き起こします。
PHP を正しくコンパイルするには、GNU ツールを使用することを忘れないで
ください。たとえば、Solaris で使用される SunOS BSD 互換の sed
や Solaris 版の sed
は正しく動作しません。しかし、
GNU 版もしくは Sun POSIX (xpg4) 版の sed
ならうまく
動きます。以下を参照ください。
» GNU sed、
» GNU flex および
» GNU bison 。