古めのWordPressサイトをテスト環境でアップデート

3 min read読了の目安(約2800字

元のサイト

  • php 5.4
  • mysql 5.6.23
  • wordpress 3.6

Local by FLywheel でテスト環境を用意

  • nginx 1.16.0
  • php 7.4.1
  • mysql 5.7.28
  • wordpress 5.6

Export / Import ツール

php.ini

必要に応じて upload_max_filesize など適宜編集。
php.iniファイルの場所はこのあたり。
/Local Sites/fuga/conf/php.ini.hbs

そのままインポートしてみる


PHP5のサイトをPHP7にインポートすると失敗するかも...という警告。
そのまま実行。

プラグインのWarningでダッシュボードに入れず

Warning: Declaration of PageNavi_Options_Page::validate($options) should be compatible with scbAdminPage::validate($new_data, $old_data) in /Users/hoge/Local Sites/fuga/app/public/wp-content/plugins/wp-pagenavi/admin.php on line 15

とか、

Warning: Cannot modify header information - headers already sent by (output started at /Users/hoge/Local Sites/fuga/app/public/wp-content/plugins/wp-pagenavi/admin.php:0) in /Users/hoge/Local Sites/fuga/app/public/wp-includes/pluggable.php on line 1296

とか。

調べてみたところ、
How to Fix PHP7 Error - WordPress Support
という記事もありますが、そもそもかなり古いプラグインみたいなので wp-pagenavi のフォルダ名を変えるなどして無効化。
するとDatabaseの更新が走ってログインページが表示されました。

ダッシュボードにログイン

ここで admin のパスワードが必要になったので、
WordPress ローカル環境でパスワードを忘れてしまったときの対処法
こちらを拝見。
Local環境だと Database -> Open Adminer から wp_users テーブルを開いて user_pass を適宜更新。
ダッシュボードに入れました。

サイト表示

各種プラグインの更新はひとまず保留にしてサイトを表示してみると、

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /Users/hoge/Local Sites/fuga/app/public/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Lightbox Plus ColorBox 2.6 を停止。
次に、詳細ページを表示。

( ! ) Warning: Use of undefined constant   - assumed ' ' (this will throw an Error in a future version of PHP) in /Users/hoge/Local Sites/fuga/app/public/wp-content/themes/piyo/content.php on line 157
Call Stack

テーマファイルに全角スペースが入っている様子。

Warning: Use of undefined constant   - assumed ' ' (this will throw an Error in a future version of PHP) in /Users/hoge/Local Sites/fuga/app/public/wp-content/themes/piyo/archive.php on line 92
Call Stack

これも同じ。
; ?>; ?> に置換。

ざっとサイト全体を眺めて Warning は無くなったのでひとまずの作業終了。
あとは、無効化したプラグインを別のプラグインに置き換えるとか、テーマを編集して対応するなど。

公開サーバーの更新

  • wp-config.php
  • wp-content/
  • データベース

念のためこれらをバックアップしておいて、WordPressのzipファイルを手元で展開。
そしてサーバー側のファイル(フォルダ)を手元のファイルで上書きしていく流れになります。
詳しくは下記のサイト。
WordPress のアップグレード - 手動更新
Upgrading WordPress – Extended Instructions