PHPエラー「PHP Fatal error: Call to undefined function mb_substr_count()」の原因と解決方法
CentOS 6でパッケージインストールしたPHP 5.3.3の環境でPHPプログラミングをしていて、mb_substr_count関数を使って、文字列内に含まれるある文字の数を数えようとすると、
PHP Fatal error: Call to undefined function mb_substr_count()
というエラーが発生した。
<プログラム例>
php -r "echo mb_substr_count('book','o');"
<エラーメッセージ>
PHP Fatal error: Call to undefined function mb_substr_count() in Command line code on line 1
エラーメッセージとしては、
PHP 致命的エラー:未定義の関数「mb_substr_count」の呼び出し
といった意味のようだが、mb_substr_count関数は、PHP 5では使用できるはず。
それが使用できないとなると、mb_substr_count関数を定義しているPHPライブラリのインストールができていない可能性がある。
「mb_」で始まる関数であるため、mbstringがインストールされている必要がありそうだ。
<php-mbstringのインストール状況確認>
# php -m | grep mbstring
→何も表示されなかったので、mbstringパッケージが使えないことが分かる。
# rpm -qa php
php-5.3.3-40.el6_6.x86_64
→php-mbstringはヒットしないので、php-mbstringパッケージがインストールされていないことが分かる。
<php-mbstringのインストール>
# yum install php-mbstring
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Determining fastest mirrors
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
extras/primary_db | 31 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 3.3 MB 00:01
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package php-mbstring.x86_64 0:5.3.3-40.el6_6 will be インストール
--> 依存性解決を終了しました。
依存性を解決しました
================================================================================
パッケージ アーキテクチャ
バージョン リポジトリー 容量
================================================================================
インストールしています:
php-mbstring x86_64 5.3.3-40.el6_6 updates 458 k
トランザクションの要約
================================================================================
インストール 1 パッケージ
総ダウンロード容量: 458 k
インストール済み容量: 2.1 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
php-mbstring-5.3.3-40.el6_6.x86_64.rpm | 458 kB 00:00
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
インストールしています : php-mbstring-5.3.3-40.el6_6.x86_64 1/1
Verifying : php-mbstring-5.3.3-40.el6_6.x86_64 1/1
インストール:
php-mbstring.x86_64 0:5.3.3-40.el6_6
完了しました!
<php-mbstringのインストール状況確認>
# php -m | grep mbstring
mbstring
→mbstringパッケージがインストールされたことが分かる。
# rpm -qa php-mbstring
php-mbstring-5.3.3-40.el6_6.x86_64
→php-mbstringパッケージがインストールされたことが分かる。
<関数mb_substr_countの実行>
# php -r "echo mb_substr_count('book','o');"
2
→PHPエラーが出なくなり、期待通りの動作をするようになった。
以上のことより、PHPエラー「PHP Fatal error: Call to undefined function mb_substr_count()」の原因は、php-mbstringパッケージがインストールされていないことにあることが分かった。
従って、解決方法は、php-mbstringパッケージをインストールすること、になる。