WordPressに急かされてPHPをバージョンアップ(7.4→8.3)

WordPressに急かされてPHPをバージョンアップ(7.4→8.3)

久々にブログで記事を更新しようと思ったらダッシュボードにてPHPのバージョンアップをするように促されてました。

WordPressに急かされてPHPをバージョンアップ(7.4→8.3)
WordPressに急かされてPHPをバージョンアップ(7.4→8.3)

前回のバージョンアップの際は失敗してWordPressのバックアップから復元した経験があったのですが、今回も少し手間取りました。

WordPressに急かされてPHPをバージョンアップ(7.4→8.3)
WordPressダッシュボードのバージョンアップ推奨文

今回はWordPressのバックアップ用プラグインのAll-in-One WP Migration and Backupをインストールしてデータをエクスポートして保存しておきます。

次にPHPのバージョンの変更ですが借りているロリポップサーバーの管理画面からPHPの操作が出来ます。
そこでPHPのバージョン8.3(CGI版)にへ加工しました。

ロリポップサーバーの管理画面からPHPの操作
ロリポップサーバーの管理画面からPHPの操作

そしてプラグインやサイトのテンプレートも更新して最新にしておきます。

次に,htaccessの変更をします。

WordPressのディレクトリの中では以下の内容と、ログインのアクセス制限の内容にしています。

WordPressのディレクトリ

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /diary/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /diary/index.php [L]
</IfModule>
# END WordPress

全体ではhtmlでもphpが使いたいので以下の酔えにバージョンに合わせて変更します。

一番上の階層

AddHandler php8.3-script .htm .html .php

つぎにWordPressの設定ファイルを直接書き直して間違いがないようにします。

wp-config.php の DB 設定を確認
/diary/wp-config.php の以下を確認/修正:

/** WordPress のデータベース名 */
define('WP_CACHE', true); //Added by WP-Cache Manager
define('DB_NAME', 'データベース名'); // データベース名
define('DB_USER', 'ユーザー名'); // ユーザー名
define('DB_PASSWORD', 'パスワード'); // パスワード
define('DB_HOST', 'データベースサーバ'); // データベースサーバ
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

ロリポップ側で DB パスワードを再設定

パスワードを再設定し、DB_PASSWORDwp-config.php に反映。認証方式の更新します。

PHP 8.3 に切り替えた状態で再確認

DB_HOSTDB_PASSWORD を正しくした上で PHP8.3 にして動作確認。

(念のため)wp-content/debug.log とサーバーのエラーログを確認

wp-config.phpを一時的に以下に変えて詳細ログを取る(終わったら戻す)。

define('WP_DEBUG', true);

その他チェックポイント

wp-config.phpは属性がロリポップではセキュリティの関係で400となっているのですが、このままでは変更やダウンロードなどが出来ないので、更新の際は644とかにして変更し、終わったら400に戻します。

PHP7.4までは引用符が 全角の「‘ ’」でも動く場合もありましたが、厳格になった8系では即エラーでHTTP 500になります。

今回わたしのところではプラグインのchp-ads-block-detectorとsitemap-generatorがエラーを起こしていたので削除しました。

以上の変更でわたしのサイトのPHPがバージョンアップ(7.4→8.3)出来ました。