はじめに
Docker環境でWordPressとNginxを使って仮想環境を構築している際に、サーバー再起動後に以下のエラーが発生しました:
お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです
さらに調査したところ、私の場合はローカルのphp.ini
ファイルが消えていたため、PHPの設定が初期化されてしまったことが原因でした。本記事では、このような状況での問題解決手順を具体的に説明します。
エラーの原因
このエラーが発生する主な原因は以下の通りです:
- PHPがWordPressに必要なMySQL拡張(
mysqli
やpdo_mysql
)を利用できない。 -
php.ini
ファイルが存在しない、または設定が正しくない。 - MySQLコンテナが正常に動作していない、またはWordPressと接続できていない。
特に、ローカル環境でphp.ini
が何らかの理由で消失している場合には、PHPの動作そのものに影響を与えるため、早急に再設定が必要です。
解決方法
私が実際に行った解決手順を以下にまとめます。
1. PHP MySQL拡張が有効か確認
まず、mysqli
やpdo_mysql
などの拡張が有効になっているかを確認します。
PHP拡張の確認コマンド
Dockerコンテナ内で以下のコマンドを実行します。
docker exec -it <phpコンテナ名> php -m | grep mysqli
結果にmysqli
が表示されない場合、PHPイメージに必要な拡張を追加する必要があります。
Dockerfileの編集
PHPイメージに拡張をインストールするようにDockerfileを編集します。
RUN docker-php-ext-install mysqli pdo_mysql
編集後、Dockerイメージを再ビルドします。
docker-compose build
docker-compose up -d
2. php.ini の再設定
私のケースでは、ローカルのphp.ini
ファイルが消えていたため、新しい設定ファイルをダウンロードして再構築しました。
php.ini のダウンロード
以下のリポジトリからphp.ini-development
をダウンロードしました。
php.ini の配置
ダウンロードしたファイルをphp.ini
としてリネームし、PHPが参照するディレクトリに配置します。
mv php.ini-development php.ini
cp php.ini /usr/local/etc/php/php.ini
Docker環境の場合、永続化するために以下をdocker-compose.yml
に追加します。
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
必要な設定の追加
以下の設定をphp.ini
に追記しました。
extension=mysqli
設定後、PHPを再起動します。
docker-compose restart
3. MySQLとWordPressの接続確認
MySQLが正常に動作しているか確認します。
docker exec -it <mysqlコンテナ名> mysql -u root -p
WordPressのwp-config.php
で以下の設定が正しいか確認します。
define('DB_HOST', 'mysql'); // Docker環境では通常 'mysql'
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'wordpress');
4. PHP情報ページで確認
最終的に、phpinfo()
を使ってPHPの設定情報を確認しました。
<?php phpinfo(); ?>
ブラウザでmysqli
が有効化されているかを確認します。
参考にしたページ
今回の解決にあたって、以下の情報を参考にしました:
- DockerでWordPress環境構築時に発生するMySQL拡張エラーの解決方法
- MySQLとPHPの設定に関するトラブルシューティング
- Docker + PHP環境でphp.iniを適用する方法
- PHP公式リポジトリ
おわりに
Docker環境では、PHPやMySQLの設定が永続化されていない場合にエラーが発生することがあります。特にphp.ini
が消失するようなケースでは、再設定が必要です。本記事が同じ問題を抱えている方の参考になれば幸いです。