Windows版PHPでphp_mbstring.dllが見つからない場合のエラーの原因と解決方法の1つ
php.netからダウンロードしたWindows版のPHP7最新版を使って久しぶりにプログラミング。
Windows 10のコマンドプロンプトでPHPを実行したら、以下のようなエラーが発生してしまった。
【エラーの内容】
C:\Users\Owner\Desktop\nobu\php-7.1.10-Win32-VC14-x86>php ./test/test.php > ./test/testfile.txt
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_mbstring.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Fatal error: Uncaught Error: Call to undefined function mb_regex_encoding() in C:\Users\Owner\Desktop\nobu\php-7.1.10-Win32-VC14-x86\test\test.php:6
Stack trace:
#0 {main}
thrown in C:\Users\Owner\Desktop\nobu\php-7.1.10-Win32-VC14-x86\test\test.php on line 6
【解決方法】
php.iniでphp_mbstring.dllが格納されているフォルダ「extension_dir」を指定することで解決した。
(PHPをコマンドプロンプトではなく、ApacheやIISから呼び出している場合は、php.iniの修正後、ApacheやIISの再起動も必要なはずなので注意。)
(php.iniの初期設定)
; extension_dir = "./"
(php.iniの修正例)
extension_dir = "C:\Users\Owner\Desktop\nobu\php-7.1.10-Win32-VC14-x86\ext"
※指定したフォルダ内にphp_mbstring.dllが存在しない場合は、php_mbstring.dllを指定したフォルダ内に設置する必要がある。
(この例の場合、extフォルダ内にphp_mbstring.dllが存在しない場合は、extフォルダ内にphp_mbstring.dllを設置する。)
私が書いた過去の記事を確認していると、7年前にも似たような記事を書いているなぁ。
時が経つのは早いし、忘れるのも早い。
《関連リンク》
・PHPエラー「Call to undefined function mb_language()」の原因と解決方法
・PHPエラー「Fatal error: Call to undefined function mb_convert_encoding()」の原因と解決方法(Windows用PHP)