人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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のままです。

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

●質問者: miyatyu
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:make PHP TAR アップデート ウェブ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● toohigh
●20ポイント

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

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

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

◎質問者からの返答

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

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

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

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

make, make install

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


2 ● hamster009
●30ポイント

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

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

LoadModule php4_module local/libexec/httpd/libphp4.so

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

◎質問者からの返答

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

/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/

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


3 ● toohigh
●30ポイント ベストアンサー

ご返答内容を見る限り、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 を作成する際にはそれを参考にしながら作成する・・・というような仕組みになっています。

◎質問者からの返答

ありがとうございます。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ