PHPエラー「Call to undefined function mb_language()」の原因と解決方法

Windows版PHPでmb_language()関数など、mb_xxxというパターンの「mbから始まる関数」を使おうとすると、

PHP Fatal error: Call to undefined function mb_language() in C:\test\mail.php on line 24

といったエラーになることがある。

このエラーの原因は、php.iniファイルでphp_mbstring.dllというPHP拡張モジュールの読み込みを行う設定が有効になっていないことにある。

php.iniファイルを確認し、

;extension=php_mbstring.dll

といったように、extensionの左側にセミコロン(;)が付いている場合は、php_mbstring.dllというモジュール(ファイル)を読み込む設定になっていない。

モジュールを読み込む設定にするには、extensionの左側のセミコロン(;)を削除し、

extension=php_mbstring.dll

とすれば良い。

しかし、これだけでは、まだ解決しない場合がある。

以下のように「指定されたモジュールが見つかりません」という新たなエラーメッセージが表示されることがある。

PHP Warning: PHP Startup: Unable to load dynamic library './php_mbstring.dll' - 指定されたモジュールが見つかりません。 in Unknown on line 0
PHP Fatal error: Call to undefined function mb_language() in C:\test\mail.php on line 24

このエラーの原因は、主に2つの可能性が考えられる。

(1)php_mbstring.dllが本当に存在しない。(このファイルを削除してしまった、あるいは、最初から存在しない。)

(2)php_mbstring.dllの在り処がPHPからは分からない。

もし、(1)が原因の場合は、ファイルを設置することでエラーを解決できる。

(2)が原因かどうかについては、php.iniファイルを見ることで分かる。

php.iniファイルを確認し、extension_dirで指定された「パス」がphp_mbstring.dllの在り処と一致していればよい。

一致していない場合は、extension_dirのパスをPHP拡張モジュールが存在するパスと一致するように修正をすれば、問題は解決する。

例えば、php.iniファイルで、

extension_dir = "./"

となっている場合は、PHPインストールフォルダの直下にphp_mbstring.dllファイルが存在することになる。

もし、PHPインストールフォルダが「C:\php」で、extension_dirが「./」という指定になっている場合は、php_mbstring.dllは「C:\php」直下に存在するべきである。

もし、php_mbstring.dllが「C:\php\ext」直下に存在する場合は、

extension_dir = "./ext"

というように、extension_dirでphp_mbstring.dllが存在するフォルダを指定してやればよい。

《関連リンク》
Windows版PHPでphp_mbstring.dllが見つからない場合のエラーの原因と解決方法の1つ
PHPエラー「Fatal error: Call to undefined function mb_convert_encoding()」の原因と解決方法(Windows用PHP)

  
 

前へ

PHPをコマンドラインで利用する時のヘルプの表示方法

次へ

PHPエラー「mail(): Failed to connect to mailserver」の原因と解決方法