2014年4月2日水曜日

FreeBSD www/mod_php5 をインストール

perl5 のアップデートを終了した後、関連する ports も更新したところ、php5 が動かなくなってしまいました。

php5 本体のバージョン確認をしたところでエラーとなるため、かなり重症でした。
$ php -v
Fatal error: Directive 'allow_call_time_pass_reference' is no longer available in PHP in Unknown on line 0

この問題は php.ini の見直しで対応可能でした。 「 allow_call_time_pass_reference 」の項目をコメントアウト(; を行頭に追加)すれば動作するようになりました。
;allow_call_time_pass_reference = On

しかし今度はウェブサーバの apache での動作が異常となってしまいました。
バージョン情報などを確認する info.php をブラウザから表示させようとすると、info.php をダウンロードするようになってしまいました。

念の為に httpd.conf の確認をしましたが問題無さそうでした。そこで apache 用のモジュール libphp5.so を探したところ、なんと!存在していませんでした。
$ ls /usr/local/libexec/apache22/libphp5.so
ls: /usr/local/libexec/apache22/libphp5.so: そのようなファイルまたはディレクトリはありません

どうも今回のリビルドで消失してしまったようです。そこで php5-5.4.26 のビルドオプションを確認してしました。

すると apache 用のモジュールを作るオプションがありませんでした(涙)。


いったいどうしたものかとネット上を検索してみると、apache 用のモジュールを作る ports (www/mod_php5) が存在していることを知りました。そこでこの ports をインストールしてみました。
# portinstall www/mod_php5

インストールが完了した後、apache を再起動させました。
# apchectl restart

これで apache 上で php5 が動作するようになりました。

しかし不思議なのはどうして以前のビルドでちゃんと apache 用のモジュールが作られたのか?でした。 もしかして以前からバージョンで使用していたオプションがそのまま引き継がれていてモジュールを勝手に作ったのでしょうか? とにかく不思議な現象です。

0 件のコメント:

コメントを投稿