ラズパイ自作サーバーのPHP8化でWordPressが「MySQL拡張を利用できない」と出た時の対処法
✅ 🚀 はじめに:ラズパイで始まった私のエンジニアライフ
私はエンジニアへのキャリアチェンジをしたあと、学習の一環としてRaspberry Pi(ラズパイ)を使用した自宅サーバーの構築・運用を行っていました。当時はこのブログも、ラズパイ上のWordPressで運用しており、インフラの基礎を実体験から学んでいました。しかし、自宅サーバー運用にトラブルはつきものです。今回は、PHPのバージョンアップに伴って発生した、WordPressのデータベース接続に関するエラーの解決過程を詳しく記録します。同じ事象で困っている方の参考になれば幸いです。
✅ 事象:WordPressのセットアップ画面が表示されない
ラズパイにWordPressをインストールし、本来であればブラウザでアクセスした際に初期セットアップ画面が表示されるはずでした。しかし、画面に表示されたのは以下の無機質なエラーメッセージでした。
「お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです。」
このメッセージが表示されると、WordPressはデータベース(MySQL/MariaDB)と通信することができず、インストール作業を一切進めることができません。
✅ 当時の環境確認
トラブルシューティングの第一歩は、現在の環境を正確に把握することです。コマンドラインから確認した当時の環境は以下の通りでした。
$ php -v
PHP 7.3.29-1~deb10u1 (cli) (built: Jul 2 2021 04:04:33) ( NTS )
OSはRaspbian(現在のRaspberry Pi OS)、PHPは7.3系を使用している状態でした。
✅ 第一次対応:php.iniの編集によるモジュール有効化
エラー内容から「PHPがMySQLを利用するためのモジュールが読み込まれていない」ことが推測されます。まずはPHPの設定ファイルであるphp.iniを直接編集して、モジュールの読み込みを明示的に有効化しました。
/etc/php/7.3/cli/php.iniをvim等のエディタで開きます。- 920行目付近にある、拡張機能の設定を確認します。
;extension=mysqliとなっている行を探します。 - 行頭のセミコロン(;)を削除して、コメントアウトを解除します。
extension=mysqli - Webサーバーを再起動します。
これにより、一旦は正常にセットアップ画面が表示され、運用を開始することができました。
✅ 第二の壁:パッケージ更新後の再発と「PDO」の罠
しばらく安定して運用していましたが、システムのパッケージ更新(sudo apt upgrade)を行ったある日、再び悪夢のエラーが発生しました。「お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです。」再発です。改めてphpinfo()を確認してみると、PDO driversの項目がno valueになっていました。PHPからMySQLへ接続するためのドライバーが、システムから完全に認識されていない状態です。原因を調査したところ、パッケージ更新によってPHPのバージョンが 8.0系 に上がっていました。
📌 環境の変化
- Apache/2.4.38 (Raspbian)
- PHP Version: 8.0.20
PHP 8系へのメジャーアップデートにより、以前の7.3系の設定が引き継がれなかったり、必要な拡張パッケージがインストールされていなかったことが真の原因でした。
✅ 💡 解決策:適切なPHP-MySQLブリッジのインストール
PHP 8系でMySQLを利用するためには、単に設定ファイルを書き換えるだけでなく、PHP 8用のMySQLモジュールがシステムにインストールされている必要があります。以下のコマンドを実行することで解決しました。
# PHP 8.0用のMySQL拡張パッケージをインストール
sudo apt install php8.0-mysql
# Apacheを再起動して設定を反映
sudo systemctl restart apache2.service
実行後、再びphpinfo()を確認すると、PDO driversにmysqlの文字が表示されました。ブログも無事に表示されるようになり、完全復旧です。
✅ 📌 まとめと教訓:インフラ運用におけるバージョン管理
今回のトラブルから学んだ教訓は、「メジャーバージョンのアップデートには、周辺モジュールの依存関係が伴う」ということです。
- 自動更新の注意点: 自宅サーバーのように「とりあえず動けばいい」環境であっても、安易なバージョンアップがサービス停止を招くリスクを再認識しました。
- phpinfo()の重要性: ブラウザ上のエラーメッセージだけでなく、内部でどのドライバーが読み込まれているかを
phpinfo()で客観的に確認することが、解決への近道でした。 - パッケージ更新の影響範囲:
apt upgradeは便利ですが、PHPのようなミドルウェアのバージョンが変わる場合、連携するデータベースドライバーなどの再インストールが必要になるケースがあります。
インフラエンジニアとして、実務でも「設定ファイルの修正で直った」で終わらせず、「なぜそうなったのか」の裏付けを取る姿勢を大切にしていきたいと感じた一件でした。
LEE
SIチーム管理職
2024年よりSIチームの管理職に従事。技術とマネジメントの両立をモットーに、現場のリアルな知見を発信しています。趣味は車とガジェット。