WordPressで発生する「MySQL拡張機能がありません」エラーの修正方法

intermediate📝 WordPress2026-05-29| PHP 7.0+, WordPress 4.0+, Linux (Ubuntu/Debian, CentOS), Docker

Error Message

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.
#wordpress#php#mysql#devops

背景このエラーが表示される場合、通常はPHP環境がMySQLデータベースと通信できないことを意味しています。PHP 7.4から8.3へのアップグレード時や、新しいサーバーのセットアップ時によく見られる典型的な症状です。

このエラーメッセージ自体は少し古い仕様の名残です。「MySQL拡張機能」と言及されていますが、現在のWordPressは実際にはmysqliまたはpdo_mysqlに依存しています。オリジナルのmysqlドライバーはPHP 7.0で廃止されたため、この汎用的なメッセージは「データベースへの適切な接続手段が見つからない」というWordPressなりの表現なのです。

デバッグ手順むやみに設定を変更する前に、まずPHPランタイムに拡張機能が実際に不足しているかどうかを確認しましょう。ターミナルで以下のコマンドを実行します。

php -m | grep -i mysql

何も表示されない場合は、CLI環境に拡張機能がインストールされていません。しかし、ターミナルの設定がウェブサーバーの設定と同じであるとは限らないという点に注意が必要です。**PHP-FPM(ウェブ)とPHP-CLIは、異なる設定ファイルを使用していることがよくあります。**ブラウザから見た状態を確認するために、WordPressのルートディレクトリにinfo.phpという名前のファイルを作成してください。

<?php phpinfo(); ?>

yourdomain.com/info.phpを開き、"mysqli"または"mysqlnd"を検索してください。これらのセクションが見当たらない場合、拡張機能が無効になっているか、インストールされていません。

解決策### 1. Linuxに拡張機能をインストールするほとんどのLinuxディストリビューションでは、MySQL拡張機能は個別のパッケージになっています。使用しているPHPのバージョンに正確に一致するパッケージを選択する必要があります。

Ubuntu / Debian```

最初に現在有効なバージョンを確認

php -v

PHP 8.1を使用している場合は以下を実行:

sudo apt update sudo apt install php8.1-mysql

その後、サービスを再起動

sudo systemctl restart apache2

Nginxユーザーの場合:

sudo systemctl restart php8.1-fpm


#### CentOS / RHEL / Fedora```
# 最近のRHELベースのシステムではdnfを使用
sudo dnf install php-mysqlnd
sudo systemctl restart httpd
# Nginx/PHP-FPM構成の場合:
sudo systemctl restart php-fpm

2. php.iniの設定を有効にするソフトウェア自体はインストールされていても、設定ファイルで無効化されている場合があります。

  • php.iniのパスを特定します(phpinfo()の出力にある"Loaded Configuration File"を確認)。- ;extension=mysqliという行を探します。- セミコロン(;)を削除して有効にします。``` extension=mysqli extension=pdo_mysql

ファイルを保存し、ApacheまたはPHP-FPMを再起動して変更を適用します。
### 3. Docker環境での修正公式のPHP Dockerイメージを使用している場合、拡張機能の追加に`apt-get install`は使用できません。Dockerfile内で`docker-php-ext-install`ヘルパーを使用して、正しくコンパイルする必要があります。

FROM php:8.2-fpm RUN docker-php-ext-install mysqli pdo_mysql

保存後にイメージを再ビルド


Docker Composeを使用している場合は、データベースの環境変数を確認してください。古いバージョンのWordPressでは、接続失敗時にタイムアウトではなく、この「拡張機能がありません」という紛らわしいエラーが発生することがあります。
### 4. Windows (WAMP/XAMPP)XAMPPを使用しているローカル開発者の場合は、コントロールパネルを開き、Apacheの横にある「Config」をクリックして`php.ini`を開きます。`extension=mysqli`がコメントアウトされていないことを確認してください。また、`extension_dir`が実際の`ext`フォルダのパス(通常は`"C:\xampp\php\ext"`など)を指しているか再確認してください。
## 確認手順正常に設定されると以下のようになります。
- **コマンドライン:** `php -m | grep mysqli`を実行します。すぐに`mysqli`と表示されるはずです。- **ウェブブラウザ:** `info.php`ページを更新します。"mysqli"という専用のヘッダーが表示され、Client APIライブラリのバージョンがリストされているはずです。- **WordPress:** サイトが正常に読み込まれるはずです。もし代わりに「データベース接続確立のエラー」が表示される場合は、拡張機能の問題は解決していますが、データベースの接続情報が間違っています。## まとめ- **CLI vs ウェブ:** ターミナルでの`php -m`の結果がウェブサーバーでも同じだと思い込まないでください。多くの場合、異なる`php.ini`ファイルが使用されています。- **ネイティブ推奨:** 常に`mysqlnd`(MySQL Native Driver)を優先しましょう。古い`libmysqlclient`よりも高速で、メモリ使用量も大幅に抑えられます。- **後片付け:** セキュリティが最も重要です。`info.php`ファイルは攻撃者にとって情報の宝庫となるため、確認が終わったらすぐに削除してください。

Related Error Notes