■サーバーを仕立て直して環境再構築中。メインで使うApacheとPHPの設定は、ちょうどタイミングよく、それぞれApache2.4.1とPHP5.3.10のリリースとかぶったのでそれに合わせてみる。いつものようにtarballを展開してコンパイル。Apache2.4.1は問題なさそうだったけど、PHPのインストールで不具合。apacheの起動時にAPC、DIO、aOuthのモジュールがロードできない。
PHPのコマンドライン実行時もエラーが出てしまい、特にDIOはZBeeへの通信に使うtty経由のやり取りに使っているからこれが使えなくなるのは痛い。原因がよく解らないので、とりあえず古い環境を戻して、別環境を作る格好でapache2.4.1とPHPを5.3.10をインストールすることにした。
まずはapache2.4.1をインストールし、普通のWebサーバーとして使えるように設定したところでPHP5.3.10をインストール。基本的なところでは問題ないのですが、APCとDIO、aOuthはやはりだめ。APCはキャッシュなのでなくても困らないし、aOuthはもともとtwitter認証用に使えるかと引き込んだのですが、結果からすれば使っていないので、やはり無くても困らない。DIOは使っているので無いと困る。もともとどういうコンパイルだったのか調べてみて思い出したのですが、この4つはPECLで提供されていました。
独立してコンパイルされて、動的にローディングされる共用ライブラリなので旧環境でコンパイルされたものを読み込んでも大丈夫そうな気がするのですが…実際、以前のapacheの2.2.x系列使用時のアップグレードではこの3つのモジュールが問題になることはなかったので、これらのモジュールを忘れていました。
古いphp.iniを流用すると3モジュールを起動時に読み込んでしまうので、まずPHP5.3.10を新規インストールするイメージで本体のみをインストールしました。
その後、PECLを使って改めてAPC,DIO,aOuthをダウンロード。新環境にインストールしたPHP5.3.10のphpizeを使ってconfigureを作り、configureでMakefileを作り、makeしmake installする。
php.iniを編集し、extensionとしてdio.so, oauth.so, apc.soを有効にしました。その後、apache2.4.1を再起動してerror_logにphpのエラーが出ないことを確認。PHPのロードモジュール本体がapacheのライブラリとリンケージを取っているという認識はあったのですが、PECLのような外だしされて動的ローディングされるライブラリも無縁ではないということですね。