0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker環境でWordPress + Nginxを構築中に発生した「PHPではWordPressに必要なMySQL拡張を利用できない」エラーの解決方法

Posted at

はじめに

Docker環境でWordPressとNginxを使って仮想環境を構築している際に、サーバー再起動後に以下のエラーが発生しました:

お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです

さらに調査したところ、私の場合はローカルのphp.iniファイルが消えていたため、PHPの設定が初期化されてしまったことが原因でした。本記事では、このような状況での問題解決手順を具体的に説明します。


エラーの原因

このエラーが発生する主な原因は以下の通りです:

  1. PHPがWordPressに必要なMySQL拡張(mysqlipdo_mysql)を利用できない。
  2. php.iniファイルが存在しない、または設定が正しくない。
  3. MySQLコンテナが正常に動作していない、またはWordPressと接続できていない。

特に、ローカル環境でphp.iniが何らかの理由で消失している場合には、PHPの動作そのものに影響を与えるため、早急に再設定が必要です。


解決方法

私が実際に行った解決手順を以下にまとめます。

1. PHP MySQL拡張が有効か確認

まず、mysqlipdo_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が有効化されているかを確認します。


参考にしたページ

今回の解決にあたって、以下の情報を参考にしました:

  1. DockerでWordPress環境構築時に発生するMySQL拡張エラーの解決方法
  2. MySQLとPHPの設定に関するトラブルシューティング
  3. Docker + PHP環境でphp.iniを適用する方法
  4. PHP公式リポジトリ

おわりに

Docker環境では、PHPやMySQLの設定が永続化されていない場合にエラーが発生することがあります。特にphp.iniが消失するようなケースでは、再設定が必要です。本記事が同じ問題を抱えている方の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?