fedora4の専用サーバーを使っています。

phpのアップデートを試みました。

php5.0.4→php5.1.5へ。
php5.1.5のtar.bz2ファイルを落として、./configure, make install, makeをしました。
#php -v
とすると、正常にphp5.1.5のversionになっているようなのですが、
ウェブ用の公開ディレクトリに、
<?php phpinfo(); ?>
からなるファイルを置いて実行してみると、バージョンが5.0.4のままです。

何をし忘れているのでしょうか。教えてください。

回答の条件
  • 1人5回まで
  • 登録:2006/08/24 06:21:20
  • 終了:2006/08/25 14:23:10

ベストアンサー

id:toohigh No.3

toohigh回答回数291ベストアンサー獲得回数372006/08/25 07:55:16

ポイント30pt

ご返答内容を見る限り、libphp.so を置くべき場所は /etc/httpd/modules/libphp.so 、であっているようですので、自分で作った libphp.so をそこに置く、というのを試してみるのが良いかと思います。


なお、php の configure 時に --with-apxs2 で指定する対象は、apxs というファイルになりますので、システム上にそれがある場合はそのファイルのフルパスを、ない場合は先になんとかして入手する、という作業が必要になるでしょう。( fedora の標準 apache なら httpd-devel パッケージに含まれている、かもしれません )

ちなみにこの apxs というものですが、 apache に関するいろいろな情報 ( apache の make 時にどんなオプションが指定されたとか、libphp.so のようなファイルをどこに置けば良いとか )を持っていて、php を作成する際にはそれを参考にしながら作成する・・・というような仕組みになっています。

id:miyatyu

ありがとうございます。

  • with-apxs2の対象は、apxsというファイルだったのですか。恥ずかしい。。。

find / -name "apxs"

をしてみたのですが、apxsという名前のファイルは見つかりませんでした。"*apxs*"で似たような名前のファイルも探してみましたがmanualの類しかありませんでした。

なので、toohighさんの仰るとおり、

(1)apxsを入手する/作成する

(2)libphp5.soを入手する

だと思うのですが、実は両方方法が分からないのでこれから調べてみます。


借りている専用サーバーでして、SSHで通信を行ったCUIで作業しています。


>>>追記<<<

yum install httpd-devel

で無事apxsを作成でき、/usr/sbin/apxs を見つけました。

make clean

./configure --with-apx2=/usr/sbin/apxs

make

make install

したのですが、、、libphp5.soが/etc/httpd/modules配下に生成されていませんでしたorz

apxsの設定か何かが違っているのかな。。。

途中でpear関連で何かが失敗しているのが原因なのでしょうか。

# make install

(略)

Installing PEAR environment: /usr/local/lib/php/

[PEAR] Archive_Tar - already installed: 1.3.1

[PEAR] Console_Getopt - already installed: 1.2

[PEAR] PEAR - already installed: 1.4.9

Warning! a PEAR user config file already exists from a previous PEAR installation at '/root/.pearrc'. You may probably want to remove it.

Wrote PEAR system config file at: /usr/local/etc/pear.conf

You may want to add: /usr/local/lib/php to your php.ini include_path

Installing PDO headers: /usr/local/include/php/ext/pdo/


>>>追記2<<<

単純に、--with-apxs2のsを忘れているだけでした。さて、こうして無事にlibphp5.soが生成されましたが、apacheの再起動に際して以下のようなことになってしまってます。

Syntax error on line 190 of /etc/httpd/conf/httpd.conf:

Cannot load /usr/lib/httpd/modules/libphp5.so into server: /usr/lib/httpd/modules/libphp5.so: undefined symbol: php_escape_html_entities

2006/08/25 14:20:40

その他の回答(2件)

id:toohigh No.1

toohigh回答回数291ベストアンサー獲得回数372006/08/24 08:12:22

ポイント20pt

apache 用の php ライブラリ ( libphp.so ) が古いバージョンのままになっているようです。

古いバージョンの libphp.so を新しいバージョンの php の make 過程で作成された libphp.so で置き換えるとうまくいくのではないでしょうか。

php の configure 時の --with-apxs なり --with-apxs2 の指定が間違ってない限り、現行の libphp.so を一旦 libphp.so.old あたりにリネームした上で php を make install 、でも同じ効果があるはずです。

id:miyatyu

どうもありがとうございます。

実はLinuxの仕組みなどがイマイチよく分かっていないので、適切に各過程を行えているかがわからないのですが、、、

apacheのlibphp5.soがどこにあるかを探しました。/etc/httpd/modules/以下にあったので、それを一度、libphp5.so.oldにリネームして再度反応を見てみました。

./configure --with-apxs2=/etc/httpd/modules/

make, make install

を行ったのですが、変化がありませんでした。make installの最中のメッセージを見ていたのですが、やはり、/etc/httpd/modules/に対して新しくファイルを作成/リンク付けなどしている様子はありませんでした。

2006/08/25 07:15:57
id:hamster009 No.2

hamster009回答回数3431ベストアンサー獲得回数502006/08/25 02:24:04

ポイント30pt

たぶん、前のが/usrに、新しいのが/usr/localにインストールされているのだと思います。コマンド起動では後者が優先されます。

apacheでどちらを使うかは、/etc/httpd/httpd.configで指定します。

LoadModule php4_module local/libexec/httpd/libphp4.so

他にもphp関係の指定を確かめてください。

id:miyatyu

ご教授どうもありがとうございます。

/etc/httpd/conf/httpd.conf

というファイルがありました。このファイルの中身に対して"php"で検索したところ見つかりませんでした。ただ、(仕組みはどうなっているのかよく分からないのですが)/ect/httpd/conf.d/php.conf というファイルに

LoadModule php5_module modules/libphp5.so

という記述がありましたので、きっとこれが関連しているのだと思います。

そして、apacheはphpを処理する際に

/etc/httpd/modules/libphp5.so

を読み込むのだと思うのですが、1への回答のように、このファイルの更新に失敗しているようです。よろしくお願いします。

それから、phpのインストールされている先がなんだかよくわからないのです。/usr/php/や/usr/local/php/といったディレクトリが作成されているわけでもないようで、(/usr/local/bin/php などは作成されていますが)実態としてのファイル群はどこなのだろうとか思っています。もしかして、tarを解凍したディレクトリが直接参照されているのでしょうか。それとも、/usr/local/bin/php がひとりで全ての処理を行ってしまっているのでしょうか。


>>>追記<<<

3に添付したログファイルを見ると、

/usr/local/include/php/

にインストールされているようですね

2006/08/25 12:27:38
id:toohigh No.3

toohigh回答回数291ベストアンサー獲得回数372006/08/25 07:55:16ここでベストアンサー

ポイント30pt

ご返答内容を見る限り、libphp.so を置くべき場所は /etc/httpd/modules/libphp.so 、であっているようですので、自分で作った libphp.so をそこに置く、というのを試してみるのが良いかと思います。


なお、php の configure 時に --with-apxs2 で指定する対象は、apxs というファイルになりますので、システム上にそれがある場合はそのファイルのフルパスを、ない場合は先になんとかして入手する、という作業が必要になるでしょう。( fedora の標準 apache なら httpd-devel パッケージに含まれている、かもしれません )

ちなみにこの apxs というものですが、 apache に関するいろいろな情報 ( apache の make 時にどんなオプションが指定されたとか、libphp.so のようなファイルをどこに置けば良いとか )を持っていて、php を作成する際にはそれを参考にしながら作成する・・・というような仕組みになっています。

id:miyatyu

ありがとうございます。

  • with-apxs2の対象は、apxsというファイルだったのですか。恥ずかしい。。。

find / -name "apxs"

をしてみたのですが、apxsという名前のファイルは見つかりませんでした。"*apxs*"で似たような名前のファイルも探してみましたがmanualの類しかありませんでした。

なので、toohighさんの仰るとおり、

(1)apxsを入手する/作成する

(2)libphp5.soを入手する

だと思うのですが、実は両方方法が分からないのでこれから調べてみます。


借りている専用サーバーでして、SSHで通信を行ったCUIで作業しています。


>>>追記<<<

yum install httpd-devel

で無事apxsを作成でき、/usr/sbin/apxs を見つけました。

make clean

./configure --with-apx2=/usr/sbin/apxs

make

make install

したのですが、、、libphp5.soが/etc/httpd/modules配下に生成されていませんでしたorz

apxsの設定か何かが違っているのかな。。。

途中でpear関連で何かが失敗しているのが原因なのでしょうか。

# make install

(略)

Installing PEAR environment: /usr/local/lib/php/

[PEAR] Archive_Tar - already installed: 1.3.1

[PEAR] Console_Getopt - already installed: 1.2

[PEAR] PEAR - already installed: 1.4.9

Warning! a PEAR user config file already exists from a previous PEAR installation at '/root/.pearrc'. You may probably want to remove it.

Wrote PEAR system config file at: /usr/local/etc/pear.conf

You may want to add: /usr/local/lib/php to your php.ini include_path

Installing PDO headers: /usr/local/include/php/ext/pdo/


>>>追記2<<<

単純に、--with-apxs2のsを忘れているだけでした。さて、こうして無事にlibphp5.soが生成されましたが、apacheの再起動に際して以下のようなことになってしまってます。

Syntax error on line 190 of /etc/httpd/conf/httpd.conf:

Cannot load /usr/lib/httpd/modules/libphp5.so into server: /usr/lib/httpd/modules/libphp5.so: undefined symbol: php_escape_html_entities

2006/08/25 14:20:40
  • id:miyatyu
    toohighさん
    hamster009さん
    どうもありがとうございました。

    回答3への反応に記されている

    Syntax error on line 190 of /etc/httpd/conf/httpd.conf:

    Cannot load /usr/lib/httpd/modules/libphp5.so into server: /usr/lib/httpd/modules/libphp5.so: undefined symbol: php_escape_html_entities

    という状況は、
    make clean してから、再度./configure ~, make, make installしたら解消されていました。
    無事、
    PHP Version 5.1.5
    の表示を見ることができました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません