1.
anonymous CVSサービスにより最新版のPHPを入手しましたが、
configureスクリプトがありません!
configure.inからconfigureスクリプトを生成するためには、GNU
autoconfパッケージが必要です。CVSサーバからソースを入手した後、
最上位のディレクトリで./buildconfを実行して下
さい。(また、configureに
--enable-maintainer-modeオプションを付けて実
行した場合以外は、configureスクリプトはconfigure.in
ファイルが更新された際に自動的に再構築を行いません。このため、
configure.inが
変更された場合には忘れずに手動で再構築を行う必要があります。
再構築の際に行われることの1つは、configureまたは
config.statusを
実行した後、Makefileの中の@VARIABLE@のような物を見つけることです。)
2.
PHPをApacheと組みあわせて動作するようにconfigureを行う際に問題が
あります。httpd.hが見付からないといわれますが、
指定した場所にこのファイルはあるのです!
configure/setupスクリプトにApacheソースツリーの最上位の場所を指
定する必要があります。これは、'
--with-apache=/path/to/apache'を指定するので
あって、'--with-apache=/path/to/apache/src'で
はないということです。
3.
PHPをconfigureしているときに (./configure)
以下のようなエラーに遭遇しました。
checking lex output file root... ./configure: lex: command not found
configure: error: cannot find output from lex; giving up |
インストールの説明をよく読み、
PHPのコンパイルにはflexとbisonの両方が必要であることに留意してください。
そーすかあるいはRPMのようなパッケージからbisonとflexを
インストールしてください。
4.
Apacheを起動するときに以下のようなメッセージが出る:
fatal: relocation error: file /path/to/libphp4.so:
symbol ap_block_alarms: referenced symbol not found |
ApacheのcoreプログラムがsharedなDSOライブラリとして
コンパイルされている場合にこのエラーが出ます。
最低でも以下のフラグを使用してApacheを再configureして
ください:
--enable-shared=max --enable-rule=SHARED_CORE |
詳細はApacheのソースディレクトリのトップレベルにある
INSTALLファイル またはApacheの
をご覧ください。
5.
configureを実行した際、GD、gdbmまたは他のパッケージのファイルま
たはライブラリを見つけることができないと言われます。
Cプリプロセッサおよびリンカに次のように追加でフラグを指定するこ
とにより、configureスクリプトがヘッダファイルまたはライブラリを
標準以外の場所で探すことが可能となります。
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
ログインシェルとしてcsh系のシェルを使用している場合、次のように
なります。
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
6.
ファイルlanguage-parser.tab.cをコンパイルする際、 'yytname
undeclared'というエラーが発生します。
bisonのバージョンを更新する必要があります。最新版は、
にあります。
7.
makeを実行する際、実行には成功しているようですがコンパイルする
最終的なアプリケーションをリンクしようとした際に何かファイルが見
つからないというエラーが発生します。
古いバージョンのmakeには、functionsディレクトリにあるファイルの
コンパイルされたものを同じディレクトリに正しく入れないものがあり
ます。cp *.o functionsを試しに実行してから
make を再度実行し、解決されるか確認して下さ
い。解決される場合には、GNU makeの最近のバージョンに更新するべき
です。
8.
PHPをリンクする際、未定義の参照があるというエラーが複数発生しま
す。
最後に適切なライブラリが全てインクルードされているかどうか確認し
て下さい。よくあるのは、'-ldl'や指定したデータベースのサポート機
能に必要なライブラリの指定が欠けているというものです。
Apache 1.2.xとリンクする場合には、適当な情報をConfigurationファ
イルのEXTRA_LIBSの行に追加し、Apacheの Configureスクリプトを再度
実行したかどうかを確認して下さい。より詳細な情報については、配布
ファイルに付属するファイル
を参照下
さい。
何名かの人からApacheとリンクする際に'
libphp4.a'の直後に'-ldl'を追加する必要があ
ることも報告されています。
9.
PHPをApache 1.3と組み合わせて構築する手法が分かりません。
この手順は実際には非常に簡単です。以下の手順に注意深く従って下さ
い。
から最新
の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 ファイルも参照下さい。
10.
インストール手順に完全に基づきUNIX上でApacheモジュール版をインス
トールしましたが、ブラウザでアクセスするとPHPスクリプトが表示さ
れ、ファイルを保存しますかと尋ねられます。
これは、何らかの理由によりPHPモジュールが起動していないことを意
味しています。助けを求める質問を行う前にまず以下を確認下さい。
実行しているhttpdバイナリが構築したばかりの新しいhttpdバイナ
リであることを確認して下さい。確認を行うには以下のように入力
します。
/path/to/binary/httpd -l
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ファイルの中に書き込んでしまったり、何らかの明らか
な変更があった可能性があります。
11.
--activate-module=src/modules/php4/libphp4.a
と書いてありますが、ファイルがありません。このため、
--activate-module=src/modules/php4/libmodphp4.aに
変更しましたが、やはりだめです。何が起きているのでしょう?
libphp4.aファイルはこの時点では存在しない、ということに気をつけて下さい。
このファイルは、Apacheの構築時に自動的に作成されます。
12.
--activate-module=src/modules/php4/libphp4.a
を指定し、PHPを静的モジュールとして組み込んでApacheを構築しよう
とした際に、システムがANSI対応ではないというエラーを発生します。
Apacheのこのエラーメッセージは紛らわしく、より新しいバージョンで
は修整されています。
13.
--with-apxsを指定してPHPを構築しようとした際、
奇妙なエラーメッセージが出力されます。
ここでは、確認すべきことが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 |
上記のようになっている場合は問題です。これらの行は空白になっているか
'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 |
可能性のある第2の問題は、RedHat-6.1と6.2でのみ存在する問題です。
RedHatが出荷した apxs スクリプトは壊れています。以下の行を見て下さい。
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install |
上の行がある場合、これを次のように変更して下さい。
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install |
最後に、Apacheのconfigure/再インストールを行います。その際、
./configure と
makeの間に
make cleanを行って下さい。
14.
makeの間、microtimeおよび
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 |
これが、エラーが発生する場合、インクルードファイルが見つからない
ことがわかります。
15.
MySQLを使用できるようにPHPをコンパイルする際、configureは正常に
実行されるがmakeの最中に以下のようなエラーが出る:
ext/mysql/libmysql/my_tempnam.o(.text+0x46): In function
my_tempnam': /php4/ext/mysql/libmysql/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). |
16.
PHPをアップグレードしたいのですが、現在インストールされているPHPを
構築するときに指定した./configureコマンドの
オプションはどこで知ることが出来ますか?
現在インストールされているPHPを構築した時のディレクトリにある
config.nice ファイルを見るか、もしもうそのディレクトリが無い場合は
というスクリプトを実行すれば、最初の方にある
./configure
という箇所に表示されます。
17.
GDライブラリをリンクしてPHPを構築すると、コンパイルエラーが発生したり
実行時にセグメンテーション違反になってしまいます。
リンクしたGDライブラリとPHPが同じライブラリ(例えばlibpng)に依存しているか
どうかを確認してください。