PHPエラー「Fatal error: Call to undefined function mb_convert_encoding()」の原因と解決方法(Windows用PHP)
PHPで文字列のエンコーディングを変更しようと思ってmb_convert_encoding関数を使用したら、以下のえらーが表示された。
Fatal error: Call to undefined function mb_convert_encoding() in C:\php\nobuneko\test.php on line 18
「mb_convert_encoding」のスペルミスはないということを確認した上で、phpinfoを確認してみると、「mbstring」の項目が一切表示されなかった。
これは、PHPの設定の問題だなぁ、と思ってphp.iniを見てみたら、以下のようになっていた。
;extension=php_mbstring.dll
今、PHPを動作させているOSがWindows XPのマシン(=この記事を書いているマシンと同じ(笑))だったので、mbstringを有効化するには、「;extension=php_mbstring.dll」ではダメだ。
;extension=php_mbstring.dll
↓
extension=php_mbstring.dll
というように「;」を削除して、Apacheを再起動すればOKのはず・・・あれ?改善せず。
まさか、と思って「extension_dir」で指定しているフォルダ(phpinfoで確認可能)を見てみたら、そのフォルダの中にはphp_gd2.dllしかなかった。何でだろう?このXPマシンにPHPをインストールしたのは随分前だったが、その時にどんなインストールしたんだろう?という疑問もあったが、とりあえず、今日のところは、インターネットでphp_mbstring.dllを入手してextension_dirフォルダに入れてApacheを再起動してみると・・・うまくいった!
《関連リンク》
・Windows版PHPでphp_mbstring.dllが見つからない場合のエラーの原因と解決方法の1つ
・PHPエラー「Call to undefined function mb_language()」の原因と解決方法