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では使いません。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲