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パッケージをインストールすること、になる。

前へ

PHPエラー「PHP Notice: Use of undefined constant」の原因と解決方法

次へ

PHP 7はパフォーマンスが改善されていてPHP 5.6の2倍ぐらいの速度が出るかも!?