みんなのちからになりたい

コピペでブログラムつくっていきたい

PHP5.2辺りから一気に5.5まで上げたときにハマったことメモ

PHP5.4あたりでmb_ereg_matchとかmb_convert_kanaとかこの辺のマルチバイト変換系のやつがエンコード指定しないとまともに動かなくなったようで、いままでPHP.iniの内部エンコードを指定してないでデフォルトEUCだけどなんかしらんけどよろしくやってくれたのがやってくれなくなっていて、これがなんだかんだで一番ハマる。

まともにやるなら

でやる必要があるんだと思う(普段まったくPHP使わないので詳しいことはよく知らない)

今回の場合はPHP.iniを容赦なくいじれたので、デフォルトの内部エンコーディングをいじって対応した。

mbstring.internal_encoding = Shift_JIS

これ以外の問題としては、ワーニングが死ぬほど出るので、大局に影響しないと判明したものに関してはerror_reportingで軒並みフィルタした。

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT

あとは運悪くORACLEを使ってたりするとOCIのDLLが変わってたりするのでその辺対応すればだいたい動くのではないかと思われる。