基本Google Gemini にエラー内容、エラー.logを貼り付けて修復した。
多分今後も php関連のアップデートがあると同じ問題が発生すると思われる。
下記のマトメもAIで生成してますw
WordPress 復旧作業レポート
1. 発生していた問題
- 接続拒否 (Connection Refused): Webサーバー(Apache)が正常に応答していない、または通信が遮断されていた。
- データベース接続エラー: Webサーバー起動後、「MySQL拡張を利用できない」というエラーが発生。
- PHPモジュールの不一致: PHP 8.4 を使用しているにもかかわらず、システムが古いパスの
mysqli.soを探してしまい、データベースへの接続に失敗していた。
2. 実行した修復手順
ステップ1:データベース状態の確認
sudo systemctl status mariadbで MariaDB 自体は起動していることを確認。mysql -u root -pでデータベースに直接ログインできることを確認し、DB側の不具合ではないことを切り分け。
ステップ2:PHP 8.4 への対応
- モジュールの導入: PHP 8.4 で MySQL を扱うためのパッケージをインストール。Bash
sudo apt install php8.4-mysql - 依存関係の再構築: ログから判明した「ライブラリの読み込み失敗」を解消するため、PHP 8.4 の共通ファイルを再インストール。
Bash$ sudo apt install --reinstall php8.4-common php8.4-mysql libapache2-mod-php8.4
ステップ3:Apacheの設定反映
- PHP 8.4 モジュールを確実に有効化し、古いバージョンの干渉を防止。
- Apache を再起動して、新しくインストールした
mysqli拡張を認識させた。Bashsudo a2enmod php8.4 sudo systemctl restart apache2
Bash$ sudo a2enmod php8.4 sudo systemctl restart apache2
3. 最終結果
- PHP が正しいパスにある
mysqli.soを読み込めるようになり、WordPress から MariaDB への接続が確立。 - サイトが正常に表示されることを確認。
💡 今後のためのアドバイス
今後、OSのアップデート(apt upgrade)などで PHP のマイナーバージョンが上がった際、今回のように「モジュールが見つからない」という警告が出ることがあります。その際は、「現在動いているPHPのバージョン」と「インストールされている拡張モジュールのバージョン」が一致しているかをまず確認するのが解決の近道です。
あなたのプロンプト
php関連のアップデートは止めるべきか?
Gemini の回答
結論から言うと、**「アップデート自体は止めるべきではないが、自動更新は慎重にするべき」**です。
セキュリティの観点からは最新の状態を保つのが正解ですが、今回のように「OSが勝手にPHPを上げてしまい、設定が追いつかずにサイトが止まる」というのは、自前サーバー(Lubuntu)を運用する上で最も避けたい事態です。
今後の運用のために、以下の3つの戦略を検討してみてください。
1. 「マイナーバージョン」を固定する(推奨)
今回、PHP 8.4 へのアップデートでトラブルが起きました。UbuntuなどのLinuxでは、勝手にバージョンが上がらないように「ホールド(固定)」という操作ができます。
- メリット:
apt upgradeをしても PHP だけは今のまま維持されるので、サイトがいきなり止まるのを防げます。 - やり方:
- ※これで、自分が「よし、手動で更新しよう」と思うまで 8.4 のまま固定されます。
Bash$ sudo apt-mark hold php8.4*
2. アップデート前の「予習」を習慣にする
PHP のアップデートは、今回のようにモジュール(mysqli など)のパスが変わることがあります。
- アップデートを実行する前に、
apt list --upgradableで何が更新されようとしているか確認する。 - PHP の更新が含まれている場合は、時間に余裕がある時に実行し、今回のように
systemctl restart apache2をセットで行う。
3. セキュリティアップデートだけは受け入れる
PHP のアップデートには「新機能の追加(バージョンアップ)」と「脆弱性の修正(パッチ)」の2種類があります。
- パッチ(例: 8.4.18 → 8.4.19)は、設定を壊すことは稀ですが、セキュリティ上非常に重要です。
- バージョンアップ(例: 8.3 → 8.4)は、今回のように設定の再構築が必要になることが多いため、慎重に行うべきです。
💡 まとめ:どうすべきか?
「勝手に上がるのを防ぎ、自分のタイミングで更新する」 のがベストです。
以下のコマンドで PHP 関連を固定しておけば、普段の sudo apt upgrade でサイトが壊れる心配がなくなります。
Bash
# PHP 8.4 関連のパッケージを固定
sudo apt-mark hold php8.4 php8.4-common php8.4-mysql libapache2-mod-php8.4
もし、数ヶ月後にセキュリティ情報を見て「そろそろ新しくしないとな」と思ったら、unhold して手動で更新すればOKです。
セキュリティアップデートだけするにはどうする?
Gemini の回答
「パッケージを固定(hold)」した状態で、セキュリティ修正だけを適用するのは少し工夫が必要です。なぜなら、固定したパッケージは apt upgrade の対象から完全に外れてしまうからです。
セキュリティアップデートを安全に取り入れるには、以下の2つの方法があります。
方法1:手動で固定を解除して更新(推奨)
数ヶ月に一度など、メンテナンスの時間を決めて手動で更新する方法です。これが最も確実で、トラブルにもすぐ対処できます。
- 一時的に固定を解除するBash$
sudo apt-mark unhold php8.4* - 更新があるか確認し、適用するBash$
sudo apt update sudo apt install --only-upgrade php8.4* - 終わったらすぐに再度固定するBash
$ sudo apt-mark hold php8.4*
コメントを残す