2026年7月30日
2026年7月30日
WordPressでmbstringが無効なときのエラーと有効化の手順(Ubuntu・RHEL系・Windows)
mbstringは、日本語のようなマルチバイト文字(UTF-8)を正しく扱うためのPHPの拡張モジュールです。WordPressの運用では「入っていて当たり前」の拡張ですが、PHPを自分で入れたVPSや、最小構成で作ったサーバーでは入っていないことがあります。
この記事では、mbstringが無効なときに出る症状、WordPress本体での扱い、有効かどうかの確かめ方、OSごとの有効化の手順を説明します。
mbstringが無効なときの症状
- 管理画面の「ツール」→「サイトヘルス」に、「推奨モジュールが見つからない」という趣旨の項目が表示され、詳細に
mbstringが挙がる(英語表示では「One or more recommended modules are missing」) - サイトや管理画面が「重大なエラー」の画面になり、エラーログに次のような行が残る
PHP Fatal error: Uncaught Error: Call to undefined function mb_strimwidth()
関数名は mb_strimwidth() のほか、mb_convert_encoding()、mb_strtolower() など、プラグインやテーマが使っているものになります。
WordPress本体での扱い
WordPressのホスティングチームがまとめているサーバー環境の要件では、mbstringは「必須」ではなく「強く推奨」の拡張に入っています(必須は json・hash・mysqli。2026年11月時点)。サイトヘルスの判定も同じで、mbstringが無い場合は「推奨モジュールが無い」として扱われます。
WordPress本体には、mbstringが無い環境のために mb_substr()・mb_strlen()・mb_chr()・mb_ord() の代わりになる関数が用意されています(wp-includes/compat.php)。そのため、本体だけなら動くことがあります。一方、ほかの mb_ 関数には代わりが無いため、それらを使うプラグインやテーマは、mbstringが無いと上のような致命的エラーで止まります。
日本語のサイトでは、プラグインやテーマの多くがmbstringを前提にしているので、有効にしておくのが現実的です。
手順1:mbstringが有効かどうか確かめる
サイトヘルスで確かめる
管理画面の「ツール」→「サイトヘルス」の「ステータス」に、推奨モジュールの不足として mbstring が表示されていなければ、Webサーバー側のPHPでは有効です。
コマンドで確かめる
php -m | grep -i mbstring
mbstring と表示されれば、コマンドライン(CLI)のPHPでは有効です。
ただし、CLIのPHPとWebサーバーが使うPHP(PHP-FPMやApacheのモジュール)は、設定ファイルが別で、バージョンも違うことがあります。CLIで有効でもWebサーバー側で無効なことがあるので、最終的にはサイトヘルスで確かめます。WebサーバーのPHPのバージョンは、サイトヘルスの「情報」→「サーバー」で確認できます。
手順2:mbstringを入れて有効にする
Ubuntu・Debian
sudo apt update
# 標準のPHPに合わせたパッケージを入れる
sudo apt install php-mbstring
複数のPHPを入れている場合や、標準とは別のバージョンを使っている場合は、php8.3-mbstring のようにWebサーバーが使っているバージョンのパッケージを入れます(バージョンはサイトヘルスの「情報」→「サーバー」で確認したものに合わせます)。
パッケージを入れると、通常は自動で有効になります。有効になっていない場合は、次のコマンドで有効にします。
sudo phpenmod mbstring
RHEL・AlmaLinux・Rocky Linux
sudo dnf install php-mbstring
Windows(PHPを自分で入れている場合)
php.ini を開き、次の行の先頭に ; があれば削除して保存します。
extension=mbstring
php.ini の場所は、コマンドプロンプトで php --ini を実行すると確認できます。
共用サーバー
共用サーバーでは、利用者がPHPの拡張を入れることはできません。コントロールパネルのPHP設定に拡張の選択画面があればそこで有効にし、無ければサーバー会社に問い合わせます。
Docker
公式の wordpress イメージ(例:wordpress:6-php8.3-apache)では、mbstringは最初から組み込まれています(2026年11月時点で php -m により確認)。自分で php イメージから作ったイメージで無効になっている場合は、Dockerfileでの組み込み方を見直します。
手順3:WebサーバーのPHPに反映する
拡張を入れたあとは、Webサーバー側のPHPを再起動しないと反映されません。使っている構成に合わせて再起動します。
# Ubuntu・Debian:Apache のモジュールとして PHP を動かしている場合
sudo systemctl restart apache2
# Ubuntu・Debian:PHP-FPM を使っている場合(バージョンは環境に合わせる)
sudo systemctl restart php8.3-fpm
# RHEL 系:PHP-FPM と Apache を使っている場合
sudo systemctl restart php-fpm
sudo systemctl restart httpd
再起動したら、もう一度「ツール」→「サイトヘルス」を開き、mbstring が推奨モジュールの不足として表示されなくなったことを確認します。致命的エラーが出ていた場合は、そのページを開き直して表示されるかを確かめます。
古いmbstringの設定に注意
昔の解説では、php.ini に次のような設定を書くよう案内されていることがあります。
mbstring.func_overload:PHP 7.2で非推奨になり、PHP 8.0で削除されました。現行のPHPでは使えません。mbstring.internal_encoding:PHP 5.6で非推奨になっています。文字コードはdefault_charset(初期値はUTF-8)で決まるので、通常は設定不要です。
mbstringを有効にするだけなら、これらの設定は要りません。
まとめ
- mbstringはWordPress本体では「強く推奨」の拡張で、本体は一部の関数の代わりを持っていますが、プラグインやテーマは
mb_関数の未定義エラーで止まることがあります。 - 有効かどうかは、最終的にサイトヘルスで確かめます。
php -mはCLIのPHPの結果です。 - Ubuntu・Debianは
php-mbstring(またはバージョン付きのパッケージ)、RHEL系はphp-mbstringを入れ、Apache や PHP-FPM を再起動します。 mbstring.func_overloadなどの古い設定は現行のPHPでは使いません。