コアサーバーのマイグレーション(システムの増強と移行)でトラブル発生!
投稿日:2017/10/31 更新:2020/3/14 コメント 0件 サイト運営 コアサーバー, サイト運営, サーバーエラー, マイグレーション, ワードプレスコアサーバーでサーバーシステムの増強と移行(マイグレーション)によるリニューアル作業が順次行われてきたんですが、2017年10月29日 0:00 ~ 09:00 に筆者の使用しているサーバーの順番が回ってきました。事前にデータベースやワードプレスファイルのバックアップなどは済ませてもしもの準備はしていたものの、まさかトラブらないだろうと安易に考えていたんですが残念ながら不具合が発生しました。
目次
エラーメッセージが表示される
不具合の症状としては以下のようなワードプレスサイトであるブログ「A2-blog」とダッシュボードの上部にPHP絡みのエラーが表示され、エラーメッセージの下に通常の表示が行われるといった感じになりました。更に困ったことに通常なら左サイドにメニューが表示されているんですがそれも一切表示されないのでダッシュボードからは何もできないような状態でした。因みにエラーメッセージの内容は下記の画像以外にもいくつかありました。
尚、エラーメッセージが表示されている時にサイトを訪れた方にはビックリさせてしまったと思いますがご了承下さい。
因みに筆者のサイトはhttps://edit-anything.comをトップページにして各カテゴリーごとにサブディレクトリーを作成してそれぞれをサブサイトとして管理・運営していてブログのみがワードプレスを使用した動的なサイトでその他のサイトはHTMLコードの手打ちによる静的なサイトです。エラーメッセージが表示されたのはブログのみで静的なサイトでは特に問題は無かったようです。
サポートに連絡
これはどうしたものかと色々と弄っていたら「新規」メニューの「メディア」を開くとなんとかサイドメニューだけは表示されるようになりました。
ただ原因がまったく分からないですし、まだ移行作業が済んでいないのかも知れないのでこちら側では何もせずに取り敢えずサポートに問い合わせしました。すると日曜日なのに1時間もせずに返信(午後2時過ぎ)がきたんですが2回目の返信がそれから何時間待っても来なくて夜になったので翌日まで待ってらないので自ら不具合の原因を探し出すことにしました。因みに2回目の返信は翌日の午後になって「担当部門にて確認の上、ご回答させていただきたく存じます。」という頼んない回答が来てました。
メンテナンスモードで原因究明
アクセスが少なくなってきた深夜に管理者以外のアクセスがあったら「メンテナンス中」などのメッセージを表示させてくれるプラグイン「WP Maintenance Mode」をインストールして作業を開始しました。
デバッグモードを無効する
ワードプレスのデフォルト設定では確かデバッグモードは無効になっていたと思うんですが、ローカル環境(Local by Flywheel)で自作テーマを作成中にエラーがあった時に分かりやすいようにwp-config.phpでデバッグモードを有効(true)にしていてそのテーマをそのままアップロードしていたのでデバッグモードが有効になっていました。
define('WP_DEBUG', true);
この設定を無効(disable)にしてエラーメッセージがどうなるか試してみようとしてたんですがWordPress Codexを見るとデバッグモードが有効なままでログが残せて、しかもHTMLにはエラーメッセージを表示させなくできるコードがあったのでその方法をwp-config.phpに追記してみました。
define('WP_DEBUG', true); define( 'WP_DEBUG_LOG', true); define( 'WP_DEBUG_DISPLAY', false);
コードを追記すると見事にエラーメッセージは表示されなくなりました。最悪、原因を究明できなくてもwp-config.phpにこのように記載しておけばいいので取り敢えずはひと安心です。
プラグインを無効する
ワードプレスのエラーはプラグイン絡みで発生することも多いようなのでプラグインを無効にしてみました。因みに以下が現在使用しているプラグインです。
- EWWW Image Optimizer
- Broken Link Checker
- AmazonJS
- Table of Contents Plus
- WordPress Popular Posts
- Google XML Sitemaps
- AddQuicktag
- Akismet Anti-Spam (アンチスパム)
プラグインを無効にするやり方はダッシュボードからもできるんですがFileZillaでサーバーにアクセスしてプラグインの収まっているフォルダを「plugins →plugin_stop」などに別名に改名するとプラグインが読み込まれなるのでこちらの方法でやりました。ただ残念ながら無効にしてもエラーメッセージは消えませんでした。
デフォルトテーマに変える
自作のテーマ「blank-1」を使用しているのでワードプレス(バージョン 4.8.2)のデフォルトテーマ「Twenty Seventeen」にしてみましたがエラーメッセージは消えませんでした。
「php71.ini」に追加コードを記載する
コアサーバーのヘルプに「PHPで構築したページが文字化けしている。」の対処法が記載されていたので試してみましたがエラーメッセージは消えませんでした。
xxx/public_html/.fast-cgi-bin/php71.ini に、下記一行を追記する。 default_charset = ""
PHP7.0に戻す
サーバーの強化としてPHPのバージョンがPHP7.1になったんですが以前はPHP7.0にしていた筈なのでコアサーバーのコントロールパネルで元に戻してみたら見事にエラーメッセージが消えました。再確認としてPHP7.1にしたら再びエラーメッセージが出たので今回のエラーメッセージが表示される問題はPHPのバージョンによる不具合であると思われます。
ローカル環境(Local by Flywheel)ではPHP7.14でテストして問題なかったので大丈夫だろうと思っていたんですが、PHPについてはネット情報を参考にWPテーマを自作するくらいはできましたがなにせPHPの基礎を学んでいないド素人なのでPHPのバージョン変更でこのような不具合が起こるとは初めて知りました。
[do_action_ref_array] → [do_action]
既に原因は判明していますがもう少し調べてみたら筆者と同じように「xxx/class-wp-hook.php on line 298」でエラーをしている方がいたのでその方の記事を参考にclass.wp-styles.phpとclass.wp-scripts.phpのコードを修正してみたら見事にエラーが消えました。
do_action_ref_array( 'wp_default_styles', array(&$this) ); ↓ do_action( 'wp_default_styles', array(&$this) );
do_action_ref_array( 'wp_default_scripts', array(&$this) ); ↓ do_action( 'wp_default_scripts', array(&$this) );
ただ、参考サイトにも追記されていますが上記に修正してもワードプレスをアップデートするとまたコードが上書きされてエラーを吐くので暫定的な方法のようです。WordPress Codexを見ると「do_action_ref_array」は「do_action」と同等の関数と書かれていますが細かいところに何かあるでしょうけど個人的にさっぱりですw。
その他の不具合
ファイルマネージャーに警告メッセージ
このほかにもサーバーのファイルマネージャーに下記のようなエラーメッセージが表示されていましたがこの不具合は解消されています。
Warning: register_shutdown_function() [function.register-shutdown-function]: Invalid shutdown callback "shutdown" passed in/virtual/www/public_html/ftp/index.php on line 46
PhpMyAdminでデータベースのエクスポートができない
PhpMyAdminでのエクスポートができなくなっていましたがこちらの不具合は記事投稿時点ではまだ解消していません。余談ですがコアサーバーのコントロールパネルでデータベースのバックアップしてファイルマネージャーからダウンロードすることはできるんですが、ファイル名が意味不明で使い辛いんですよね。一々ファイル名を変更するよりはPhpMyAdminで設定した命名規則で自動生成させた方が結果的に楽で管理しやすのでこのようなやり方をしています。
追記 2017.11.5
PhpMyAdminを再インストールしたらエクスポートできるようになりました。
コアサーバー PhpMyAdminを再インストールしてみた!
wp-config.phpが文字化け
こちらの不具合も解消していますがサーバー上のwp-config.phpを開いたら文字化けしてました。
アクセス数の落ち込み
ワードプレスのエラーを見てことない人だとページを開いていきなり変なエラーメッセージが表示されたらヤバいサイトだと思ってすぐにサイトを閉じるかと思いますが、一応ページを開いたのにアクセス数がガクーンと落ちるということはページをアナリティクスコードがあるところぐらいまではスクロールしないとはアクセスにはカウントされないのかも知れませんね。