PHPなところにいくと、いつの間にやら4.0.6がリリースされていたらしい。てことで、http_input関連で待ち望んでいた版なので、早速入れ替えてみました。
php.iniを適切に設定してmbstring.http_outputをSJISにしてやると・・・ちゃんとSJISで出てくる!おぉぉ。ソースの漢字コードとmbstring.internal_encodingが一致していないといけないのと、特に指定しなければバイナリ転送ページもコード変換が有効になってしまうので既に書いたコードを何箇所か修正。めでたく全ページがSJIS出力になりました。パチパチ
と一見うまくいったようだったのですが、実はかなりつまづきました。入力が文字化けするんです。で、調べてみると、mb.http_inputが効いていない。うー、いちばん期待していた部分が動かないとは。実装が間に合わなかったのか?とか思ったりかなり困った状況に陥っていたのですが、よくドキュメントを読んでみると、input変換を有効にするにはコンパイル時に--enable-mbstr-enc-trans を指定しなければいけないらしい。コンパイルはいつも通りFreeBSDのportsで行っていましたが、選択肢にこの項目はありませんでした(汗)。てことで、オプションを追加してコンパイルしてみると、すんなり動いてくれました。めでたし、めでたし。個人的にportsはFreeBSDが他のPC-UNIXと比べて最も良いと思えるシステムですが、今回ばかりは過信しすぎだったようです(てゆーか、注意力散漫?)。
というわけで、本当はPHP入れ替えはコンパイル後にApache停止->再インストール->Apache起動 で5分もあれば終了するはずだったのですが、結局2時間ほどかかってしまいました。PHPのコードを改造するなら別のファイルでテストした後リネームでもすればよいのですが、さすがに本体の入れ替えとなるとそうはいかず、非公開にするか不十分なまま公開するかを選択せにゃならんようで・・・はふ。けどまぁ、前回のPostgreSQLと今回のPHP入れ替えで抱えていた不満材料は一掃されたので、当分はシステムを止める必要もないでしょう。