引き続き、知り合いの会社のサーバ復旧作業のお手伝い中。
ほんとは一気に作業して復旧させちゃいたいんですが、俺も本来の仕事(プログラミングとか)が終わった後でないと対応できないもんで。
で、昨日は、
Warning: mb_convert_encoding(): Unable to detect character encoding in /var/www/hoge.php on line 86
な、エラー(Warning だけど、表示が乱れて使い物にならないので実質エラー)の解消作業。
ま、PHP 使いの人はよく見てる Warning メッセージでしょうが。(笑)
mb_convert_encoding($hogehoge, 'EUC-JP', 'auto')
を、
mb_convert_encoding($hogehoge, 'EUC-JP', 'ASCII,JIS,UTF-8,EUC-JP,SJIS')
に修正したら Warning が出なくなるので、典型的な「mbstring.language = Japanese」が有効になってないパターン。
でも、php.ini を見たら、ちゃんと mbstring.language = Japanese の記述が・・・
つーか、php.ini が Document Root に置いてあるんだけど、ほんと?
phpinfo() で調べてみると、ほら、Configuration File (php.ini) Path は、/usr/local/lib になってんじゃん。
/usr/local/lib 以下に php.ini が無いのを確認し、Document Root の php.ini をコピー。Apache を再起動してチェックしたら、バッチリOKです。
ということで、php.ini の置き場所を間違っていたために、mbstring.language の設定が効いていなかった・・・というオチでした。