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

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

今回はWordPressのバックアップ用プラグインのAll-in-One WP Migration and Backupをインストールしてデータをエクスポートして保存しておきます。
次にPHPのバージョンの変更ですが借りているロリポップサーバーの管理画面からPHPの操作が出来ます。
そこでPHPのバージョン8.3(CGI版)にへ加工しました。

そしてプラグインやサイトのテンプレートも更新して最新にしておきます。
次に,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_PASSWORD を wp-config.php に反映。認証方式の更新します。
PHP 8.3 に切り替えた状態で再確認
DB_HOST と DB_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)出来ました。