【WordPress】事業承継早々、やらかしました

こんにちは。

自立に向けてログハウス・ビルドを始めたとっとです。


この4月からログハウス・ビルドというログハウス施工事業を第三者承継し、右も左もわからないながら日々過ごしています。

このnoteも引き継いだ事務所(賃貸)から書いてます。


製造業ではないので、引き継ぐものに大した設備などはなく、前代表のノウハウこれまでのつながりといったものがメインになります。

その引き継ぐなかで重要なものの一つに、これまで20年にわたり運営してきたログハウス・ビルドのホームページがあります。


昨日、そのホームページの更新をしようといじっていたら、サイトが表示されなくなってしまい、発狂しそうになったので、メモしておきたいと思います。

※軽くテンパっていて、スクショ撮るの忘れていたため画像少なめです。

<補足>
この記事は同じようなことに遭遇した方のなんらか参考になればとおもい、わたしのやった復旧手順を例として細かく記載していますので、読み物として読まれる方は目次の「WordPressバージョンアップ方法」を丸ごとスキップしていただければとおもいます。

また、この記事の内容は復旧を保証するものではなく、わたしの場合はこうやって治せた、というご紹介ですので、あくまで参考として作業は自己責任にておねがいしますm__m


やりたかったこと

ログハウス・ビルドでは家の施工がひと段落すると、その案件を実績としてホームページの記事として追加しています。

これまでは、その記事追加作業を外の会社にお願いしていたようなのですが、わたしも少しだけWordPressをいじったことがあったので、経費節約のため、自分で記事を更新しよう!と思いたちました。


やらかしました

WordPressが古すぎる!

前の代表から、会社ホームページの編集ログイン情報を教えてもらい、早速ログインしてみたところ、全然みたことのないWordPressダッシュボード画面が表示されました。

WordPressのバージョンを見てみるとver.3.0.1とあり、今の最新は6.2なので、結構古いため見慣れない画面だったようです。

編集するにもとっつきにくかったので、まずはWordPressのバージョンを最新化することにしました。


ところがWordPressの更新ページを見ると、

「先にPHPのバージョンを上げてください」

とあってWordPressのバージョンをアップできませんでした。


ロリポップでPHPのバージョンアップ

サーバはロリポップを契約しています。

ロリポップのコントロールパネルにログインし、PHPのバージョンが5.x(具体的な数値忘れました)と古いものでしたので、サクッとバージョンを7.4に変更しました。

この時点では、このサクッとやったPHPの更新があんなことになるなんて知る由もありません。


サイトが表示されない・・・

サクッとPHPのバージョンを上げたので、サクッとWordPressのバージョンもあげようと、再度WordPressの編集画面にログインしたところ・・・

「HTTP 500エラー」

なるエラーが表示され、編集画面に入れません・・

しかもサイト自体も同じエラーで表示されません・・

この時点で、軽く胃が口から出そうになりました。


約10時間におよぶたたかい

胃が口から出そうになったのが昨日4/26のお昼すぎごろでした。

そこからは一人、Google先生に聞きまくりです。

トラブルシュートに費やした時間はおよそ10時間ほどにおよびました・・

4/26
昼過ぎ〜19時半ごろ
帰宅後 22時ごろ〜24時ごろ
4/27(今日)
出勤後 8時ごろ〜10時ごろ

いろいろトライ&エラーしましたが、結果的に大方の復旧ができたので胃は元の位置におさまりました。


WordPressのバージョンアップ手順

ここからは、今回トライ&エラーをしてわかったことをもとに、WordPressバージョンアップ方法を手順としてイチから整理します。

前提

わたしのケースです。

サーバ  :ロリポップ
PHP   :ver. 5.x
WordPress:ver. 3.0.1 → 6.2にしたい!
使った端末:macbook air


手順1 ファイルのバックアップをとる

なにはともあれ、以下のバックアップを取ります。

・データベース(SQL)
・会社ホームページのWordPressファイル

データベースは以下の手順でエクスポートしました。

1)ロリポップコントロールパネルにログイン
2)「サーバの管理・設定」から「データベース」をクリック
3)「phpMyAdmin」にログイン
4)上のメニューの「エクスポート」から「実行」

WordPressファイルはFTPソフト使って、サーバ上のルート直下のファイルをすべてダウンロードしました。

<参考>


手順2 サーバ上のPHPのバージョンをアップする

1)ロリポップコントロールパネルにログイン
2)「サーバの管理・設定」から「PHP設定」をクリック
3)「ドメイン」という設定表のバージョン欄からプルダウンでバージョンを選び、「変更」ボタンをクリック

わたしの場合実際には、先にPHPのバージョンをアップして冷や汗をかいてからバックアップをとりました・・


手順3 データベースのパスワード形式を更新

これも後からわかったことですが、ロリポップではPHPのバージョンによってデータベースへの接続方法が異なるようで、これを合わせるためにデータベース側のパスワード形式を更新する必要があります。

当サービスで提供しているPHP7.1以上のPHPバージョンでは、セキュリティレベルが高いデータベース接続方法を採用しており、PHP7.1以上を利用しているドメインから、古いパスワード形式である「old_password形式」を利用しているデータベースへの接続を行うことができません。PHP7.1以上を利用のドメインで使用するデータベースは、パスワード形式が「native_password形式」となっている必要があります。

ロリポップ サポートページより

1)ロリポップコントロールパネルにログイン
2)「サーバの管理・設定」から「データベース」をクリック
3)「パスワード確認」をクリックして現在のパスワード値をメモ
4)「パスワードを再設定する」をクリック
5)新しいパスワード欄に現在のパスワード値を入れて、「パスワードを再設定する」をクリック

本来このメニューはパスワードを変更するためのものですが、今回はPHPのバージョンが上がったことによるパスワード”形式”を最新化することが目的なので、パスワード値そのものは変える必要がありません。


手順4 エラーログの表示設定

PHPのエラー表示をONにします。

これにより、HTTP 500エラーという表示だけではわからない、もっと具体的なエラー内容を表示させます。

1)ロリポップコントロールパネルにログイン
2)「サーバの管理・設定」から「PHP設定」をクリック
3)php.iniの「設定」ボタンをクリック
4)その他の設定項目にある「display errors」をON
5)下部の「php.iniを設定する」をクリック


手順5 Parse error: syntax errorを修正

わたしの場合、PHPバージョンを更新し、PHPエラー表示をONにして再度WordPress編集画面を開くと、以下のようなエラーが見えました。

Parse error: syntax error, unexpected 'new' (T_NEW) in /home/〜中略〜/wp-settings.php on line 204

調べてみると、PHPが5.xから7以降に新しくなった際、PHP(プログラミング言語)の構文定義に一部仕様変更があったことに起因し、前の手順2でPHP本体をver.7.4にアップしたのに、WordPress内の一部のPHPファイルの記述がPHP ver.5以前の仕様に基づいた記載になっているために発生しているエラーのようです。

上記エラーについて説明すると、PHP ver.7以降では、NEW演算子によりクラスを使用する場合、参照に&記号を付けてはいけないというルールになっています。ということです。何を言ってるのかわかりません。

なにはともあれ、PHPファイルに以下の記述があったら、

=& new

PHP ver.7以降ではこう直しなさいよ、

= new

ということのようです。

わたしも知ったかぶって、エラーにでている「〜/wp-settings.php on line 204」のファイル箇所を見てみると、たしかに”〜=& new 〜”という記述がありました。

そこで、”〜= new 〜”としてみたら、エラーが消えました。

該当の.phpファイルの編集は、ロリポップのコントロールパネルから行いました。

1)ロリポップコントロールパネルにログイン

2)「サーバの管理・設定」から「ロリポップ!FTP」をクリック

3)ファイルリストが表示されるので、エラーメッセージのパスを参考に該当のファイルを開く

4)該当行を編集したら、下部の「保存する」をクリックで反映


他の箇所にもエラーある場合は、ひとつエラーがなくなると次のエラーとして表示されるので、同様に順次処置していきました。


手順6 Fatal error: Uncaught Errorを修正

syntax error(構文エラー)がなくなると、次はFatal errorというエラーがでてきました。

Fatal error: Uncaught Error:  〜中略〜 thrown in /home/〜中略〜/wp-settings.php on line 27

わたしの場合、上記エラーの該当箇所にはこんな記述がありました。

set_magic_quotes_runtime( 0 );

ネットで調べてみるとこんな記述が・・

「この関数は PHP 5.3.0 で 非推奨 となり、 PHP 7.0.0 で 削除 されました。」

よくわかりませんが、これもやはりPHPのバージョンを上げたことで、前は使えていたものが使えなくなった、ということのようです。

”削除されました”

ときたので、修正の余地はないとおもい、処置としてはコメントアウトしてやりました。

PHPファイルでのコメントアウトは、//(スラッシュ二つ)でできるようです。


手順7 手動でWordPressのコアファイルを最新版に置き換え

サーバ側のPHPのバージョンアップにあわせてPHPファイルの記述を見直していくと、次は新たなエラーが出ました。

「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」

これがでると、従来は一旦PHP ver.5に下げ、このエラーを回避して最新のWordPressにバージョンアップすることができたそうなのですが、今はロリポップでPHP ver.7にあげてしまうと、ver.5に戻すことができなくなってしまい、手動でWordPressファイルの最新化をする必要があります。

わたしのやった手順がこちら。

1)FTPソフトでサーバ内のWordPress本体のディレクトリを開く

2)サーバ上から以下のフォルダとファイルを残して他をすべて削除する
「wp-config.php」
「wp-contentフォルダ」
「.htaccess」(あれば)
「wp-imagesフォルダ」(あれば)

3)以下のフォルダとファイルを削除する
「wp-contentフォルダ」内にある「languagesフォルダ」
「wp-contentフォルダ」内にある「cacheフォルダ」

4)最新版WordPressの以下のフォルダとファイルを同じ場所にアップロードする
「wp-adminフォルダ」
「wp-includesフォルダ」
「wp-config-sample.php以外のファイル」
「wp-contentフォルダ」内の「languagesフォルダ」


以下のサイトが参考になりました。

わたしは最初、上記ではない別の参考サイトで
「wp-config-sample.php以外のファイル」
”以外”の記載が抜けており、四苦八苦しました・・


手順8 WordPress編集画面からデータベースを更新

ここまででWordPress編集画面に再度ログインすると「データベース更新ボタンが出る」との情報だったのですが、わたしはうまくいきませんでした。

いろいろ試したところ、わたしの場合は以下2つのプラグインファイルをFTPソフトでフォルダごとサーバ上から削除することで、無事に「データベース更新ボタン」が表示されました。

・sitemap-generator
・tweetable

更新ボタンが表示されたときは嬉しすぎて、またスクショとるのを忘れてしまいました・・

データベース更新ボタンをクリックすると正常に更新されたのですが、今度はアクセス制限が・・・・と出てしまいました。

画面の指示に従い、ロリポップのコントロール画面から「.htaccess」のIPADDRESSを記入したら、無事にワードプレスの編集画面に入れました!



手順9 PHPファイル構文エラーを一つずつ解消

ここまでいけると、WordPress編集画面が表示され、サイトも無事に表示されるとおもいます。

ここまでが辛いところです・・


ただ、よくみるとサイト上の至る所でPHPファイルの構文エラーのようなエラーメッセージが表示されていました。

わたしの場合は主に2つあり、それぞれ潰したので、例として処置内容をメモしておきます。



<エラー例1>

Warning: count(): Parameter must be an array or an object that implements Countable in /home/〜中略〜/wp-content/plugins/category-order/category-order.php on line 284

<該当箇所の.phpファイル記述>

for ($i=count($category_order)-1; $i >= 0; $i--) {
 〜中略〜
}

<処置>
count()関数を使っている箇所をif(!empty($pages))で囲う

if ( ! empty( $pages ) ) {
 for ($i=count($category_order)-1; $i >= 0; $i--) {
  〜中略〜
 }
}

<参考>



<エラー例2>

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/〜中略〜/wp-content/plugins/ContentEx_1_00/content_ex.php on line 14

<該当箇所の.phpファイル記述>

$text = preg_replace("/<p>\{\{insert_meta (.*)\}\}<\/p>/e", "post_custom('\\1')", $text); return $text;

<処置>
preg_replace関数をpreg_replace_callbackにみなおし、正規表現内の”e”を削除

$text = preg_replace_callback( "/<p>\{\{insert_meta (.*)\}\}<\/p>/", function($m){ return post_custom('\\1'); }, $text ); return $text;

<参考>


上記までを行ったところ、無事にホームページの表示が正常になり、WordPress編集画面も正しく表示されました。



まとめ

今回は会社のホームページを更新しようとして、WordPressのバージョンを上げようとしたところ、サイトが表示されなくなってしまい、かなり焦りました。

でも結果的には、事象発生の翌日AMには復旧でき、WordPressも最新版になり、素人の自分としてはなかなかのスピード感だったようにおもいます。

ログハウス・ビルドの事業を承継する前の話ですが、一昨年から昨年にかけ、自立に向けていろいろと取り組んでみたこと(プログラミングやWordPress)が本当に役に立ったとおもいました。

教訓は、
・バックアップは最初にとる
・できるだけ事前情報を調査してからやる

なのですが、性格上とりあえずやっちゃうんですよね・・・


なにはともあれ、これでやっと本来やりたかったホームページ記事の更新ができそうなので、そちらに取り組んでみたいと思います。

最後まで読んでいただき、ありがとうございました!




ログハウス・ビルド23年の軌跡をYouTubeでも配信しています。もしよろしければ、こちらもぜひ覗いてやってください!


この記事が参加している募集

最近の学び

やってみた

この記事が気に入ったらサポートをしてみませんか?