« 五日間の空白 | トップページ | 東京モーターショー(無念じゃ...) »

あ〜、すっきりした

 10/15の書き込みにあるように、地獄から帰って来た後、それはそれとして、どうして自分の手で解決できなかったのかはずっと気になっていました。
 そこで、自分の検証用のLinuxマシンで再度実験開始。
 
 要するに一番の難関だったのはPHPのバージョンを上げたらhttpdから認識しなくなった、ということ。
 これにはconfigureが大きく関わっていて、--helpのあれだけたくさんのオプションからどれをどう組んでいいのかを正確に選び出すのは至難の業。 で、ここで何度もこけていた訳です。
 結局はとある人に助けて頂いた訳ですが、一旦動けばPHPはinfophp()で様々な事が確認できますので、盗むというよりは回答表を見ながら間違いを直す、という感覚で見させて頂きました。
 
 問題の環境はredhat9で、Apacheは2.0.40、当初のPHPのバージョンは4.2.2でしたが、これを4.3.11にバージョンアップ。 パッケージではマルチバイト関係とPostgresSQL関連が入っていないので、ソースからコンパイルするしかありません。
 で、これらの--with...オプションを組み込んでもインストールで失敗していた訳です。
 
 結局師匠のコンフィギュアオプションのキモは、
 ./configure --with-DEAPI --with-apxs2filter=/usr/local/apache2/bin/apxs --enable-module=so
 (マルチバイト関連とPostgresSQL関連は省いて書いてあります)
 でして、まずEAPIではなくDEAPIを使う事、そして--with-apxs2ではなく、--with-apxs2filter(apxsへのパスは自分の環境を確認して下さい)を使う事でした。 一番重要なのは--with-DEAPIだったようで、これを入れた途端にコンフィギュア開始後のエラーメッセージが表示されなくなりました。
 当然ながらこのままmake〜installしても問題なし。
 
 その他、/usr/lib/httpd/modulesの中にlibphp4.soが残っていると、新しいバージョンのlibphp4.soが上書きされませんので、落ち着いてまず最初にそれ以前のものを削除したかどうかを確認して下さい。
 私はrpmで入ったものを削除するだけだったので楽ですが、ソースで入れたものを削除するのは大変ですけどね。
 ただし、以前にちゃんと動いていたものを復旧させる時は念のため、libphp4.so.bak等の名前で退避させておいた方が良いでしょう。
 
 例えば--with-DEAPI と--enable-module=soは--helpを見ても載っておらず、別途の技なのか、それともApacheのバージョンにあわせる為なのかは不明ながら、残念ながら私では解決できなかった筈。
 
 以上、対症療法的で理論だってはおらず、専門の方はもっと的確な解説ができるとは思いますが、これでも誰かの問題解決になれば幸いです。
 
 あ〜、しかし、すっきりした。
 このまま永久に自分が解決できなかったら後悔が残るし、何も学習していないという事になりますからねぇ。

|

« 五日間の空白 | トップページ | 東京モーターショー(無念じゃ...) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108674/6465182

この記事へのトラックバック一覧です: あ〜、すっきりした:

« 五日間の空白 | トップページ | 東京モーターショー(無念じゃ...) »