久々にサイト運営のネタです。

 

2月29日夜に、突然vsmediaのサイトおよびadminページのいずれもが「HTTP ERROR 500」になって表示されないという不具合が発生し、今日までジタバタしていました。以下はそのメモです。また同じことになった時のための備忘録的なものだと思って下さい。

 

1.初歩的な問題である可能性は?

vsmediaのレンタルサーバーはロリポップ、サイト構築・管理ツールはWordpressという環境。そこでまず初歩的な問題がないか確認してみました。

 

 ・現在まで不具合報告はなし。

 ・契約料はクレジットカードの自動更新でステイタスも入金確認済みとなっている。

 

同様に、ドメイン側も…

 

 ・ドメイン側にも不具合報告はなし。

 ・こちらも契約料はクレジットカードの自動更新でステイタスは入金確認済み。

 ・Whois報も現住所になっている。 

 

以上から初歩的な問題ではないことはほぼ確実と判断しました。

 

2.「HTTP ERROR 500」になる直前まで行っていた作業を再検証

.「HTTP ERROR 500」が表示される前までは普通にadminから記事のUPが行えサイトにもそれが反映されていました。しかし最近サイトの挙動が若干もっさりしていたこともあり、レスポンスの高速化のためロリポップの管理画面からPHPのバージョンを7.3(モジュール版)に変更。しかしこの時点でまだサイトもadminも表示されたままでした。その後、使用していたプラグインの更新が5個くらい貯まっていたので一気に更新をかけましたが、最後に更新がかかった「All in One SEO Pack」が更新された後に「HTTP ERROR 500」になりました。 以上のことから、「All in One SEO Pack」が全ての元凶のもとではないかと推測。ただしadminにも入れないのでFTPから手動でいじるしかありません。

 

3.犯人は「All in One SEO Pack」か?

そこで、「All in One SEO Pack」が全ての元凶であるとの前提で、ロリポップFTPから直接このプラグインのフォルダ名を変えてプラグイン無効化を試しましたが、vsmediaのサイトもadminもまるで変化なし。この時点で「All in One SEO Pack」犯人説を一旦置くことにしました。

 

4.Wordpressのデバッグモードを試す

ここで原因がまた分からなくなってしまったため、FTPから「wp-config.php」を開いてWordpressのデバッグモードを試して原因を究明することにしました。ただし私が使用しているWordpressはロリポップ経由で落として使っているもので、どうも通常のWordpressのファイルにあるコードが一部存在しません。そこでwp-config.phpにデバッグモードをONにするコード「define('WP_DEBUG', true);」を新たに書き加えサイトを再読み込みしました。そして出た結果はこれ。しかし大半がWarningとNoticeなので、一番下のFatal error(致命的なエラー)さえどうにかすればいけるのでは?

 

Warning: include(/home/users/0/zombie.jp-vsmedia/web/wp-content/advanced-cache.php): failed to open stream: No such file or directory in /home/users/0/zombie.jp-vsmedia/web/wp-settings.php on line 84

 

Warning: include(/home/users/0/zombie.jp-vsmedia/web/wp-content/advanced-cache.php): failed to open stream: No such file or directory in /home/users/0/zombie.jp-vsmedia/web/wp-settings.php on line 84

 

Warning: include(): Failed opening '/home/users/0/zombie.jp-vsmedia/web/wp-content/advanced-cache.php' for inclusion (include_path='.:/usr/local/php/7.3/lib/php') in /home/users/0/zombie.jp-vsmedia/web/wp-settings.php on line 84

 

Notice: Constant EZSQL_VERSION already defined in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 43

 

Deprecated: define(): Declaration of case-insensitive constants is deprecated in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 48

 

Notice: Constant object already defined in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 48

 

Notice: Constant OBJECT_K already defined in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 53

 

Notice: Constant ARRAY_A already defined in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 58

 

Notice: Constant ARRAY_N already defined in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 63

 

Warning: require_once(/home/users/0/zombie.jp-vsmedia/web/wp-content/plugins/db-cache-reloaded-fix/db-module.php): failed to open stream: No such file or directory in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 94

 

Fatal error: require_once(): Failed opening required '/home/users/0/zombie.jp-vsmedia/web/wp-content/plugins/db-cache-reloaded-fix/db-module.php' (include_path='.:/usr/local/php/7.3/lib/php') in /home/users/0/zombie.jp-vsmedia/web/wp-content/db.php on line 94

 

5.Fatal errorを分析

上記のFatal errorの内容をよく見たところ、Wordpressのキャッシュクリア系プラグイン「DB Cache Reloaded Fix」が犯人であることを特定。どうやら「SEO All In One Pack」は冤罪だったみたいです。疑ってごめん。また同じくwp-content/db.phpも悪さをしているらしいことが分かったので、思い切って「db-cache-reloaded-fix」をフォルダ丸ごとと、db.phpファイルを削除してみたら、とりあえずvsmediaのトップページとadminは復活。ただし各記事の個別ページはいまだ表示されません。引き続きWorpressのデバッグモードにて検証を進めます。

 

6.さらにWordpressデバッグモードで検証

再びWordpressのデバッグモードで検証したところ、まあ当然ながら以前と全く異なる結果が出ました。

 

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; mycategoryorder_Widget has a deprecated constructor in /home/users/0/zombie.jp-vsmedia/web/wp-content/plugins/my-category-order/mycategoryorder.php on line 256

 

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; wpSpamFree has a deprecated constructor in /home/users/0/zombie.jp-vsmedia/web/wp-content/plugins/wp-spamfree/wp-spamfree.php on line 5836

 

Notice: mycategoryorder_Widget で呼び出された WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっています ! 代わりに

__construct()

を使ってください。 in /home/users/0/zombie.jp-vsmedia/web/wp-includes/functions.php on line 4716

 

Deprecated: Non-static method ogp__open_graph_pro::init() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 288

 

Notice: register_sidebar_widget の使用はバージョン 2.8.0 から非推奨になっています ! 代わりに wp_register_sidebar_widget() を使ってください。 in /home/users/0/zombie.jp-vsmedia/web/wp-includes/functions.php on line 4648

 

Deprecated: Non-static method ogp__open_graph_pro::language_attributes() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 290

 

lang="ja" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">

 

Deprecated: Non-static method ogp__open_graph_pro::wp_head() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 288

 

「Deprecated」(非推奨)が大半で、Wordpressテーマの機能やら後付けのウィジェットやらがPHP7.3に対応していないためと思われます。もう一つ一つ再検証して直すよりPHP7.3対応の新しいWordpressテーマに着替えてしまった方が楽なんじゃないか?と思えてきましたが、そうなると良さげなWordperssテーマを探してデザイン検討もしなければならないため、それはそれでめんどくさい…

 

7.ヤバそうなプラグインとウィジェットを削除してはWordpressデバッグモードで検証

ここからはもうWordpressのデバッグモードをONにするコードを入れっぱなしにして、悪さをしていると思しきプラグインとウィジェットを削除してはWordpressデバッグモードで検証するのを繰り返していきます。ここからサイト側とadmin側でWordpressのデバッグモードで返ってくる検証結果に違いが出てきました。

サイト側は以下↓

 

Deprecated: Non-static method ogp__open_graph_pro::init() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 288

 

Deprecated: Non-static method ogp__open_graph_pro::language_attributes() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 290

 

lang="ja" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">

 

Deprecated: Non-static method ogp__open_graph_pro::wp_head() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 288

 

サイト側はclass-wp-hook.phpの原因究明を急げばどうにかなりそうですが、問題はadmin側↓

 

hod ogp__open_graph_pro::init() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 288

 

Deprecated: Non-static method ogp__open_graph_pro::admin_menu() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 288

 

Notice: add_contextual_help の使用はバージョン 3.3.0 から非推奨になっています ! 代わりに get_current_screen()->add_help_tab() を使ってください。 in /home/users/0/zombie.jp-vsmedia/web/wp-includes/functions.php on line 4648

 

Warning: Cannot modify header information - headers already sent by (output started at /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php:288) in /home/users/0/zombie.jp-vsmedia/web/wp-includes/functions.php on line 6029

 

Deprecated: Non-static method ogp__open_graph_pro::admin_init() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 288

 

Warning: Cannot modify header information - headers already sent by (output started at /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php:288) in /home/users/0/zombie.jp-vsmedia/web/wp-admin/includes/misc.php on line 1252

 

Deprecated: Non-static method ogp__open_graph_pro::save_post() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 290

 

Warning: Cannot modify header information - headers already sent by (output started at /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php:288) in /home/users/0/zombie.jp-vsmedia/web/wp-admin/admin-header.php on line 9

 

Deprecated: Non-static method ogp__open_graph_pro::language_attributes() should not be called statically in /home/users/0/zombie.jp-vsmedia/web/wp-includes/class-wp-hook.php on line 290

 

サイト側の不具合箇所も含まれますがこの差異がいよいよ意味不明で分からなくなってきました。

 

8.そして突然解決へ…

エラー箇所の検証結果にいつもFacebookのURLが含まれていることから、もしかしたらFacebook連携支援プラグイン「Open Graph」が悪さをいているのではないかとアタリを付け、思い切って削除したらサイト側もadmin側も綺麗サッパリエラー結果が出なくなりました。今もまだWordpressのデバッグモードを有効化するコードを入れっぱなしですが、どちらの画面にもエラー検証結果は表示されていない(はず)。

予想して狙い撃ちしたら解決したというphpスキルもへったくれもない偶然に頼った解決法でしたが、とりあえずなんとかなって一安心。でも今後また変な挙動になったりしないか心配なのでしばらくデバッグモードのコードは入れっぱなしにしておきます。

 

 

 

独習PHP 第3版 独習PHP 第3版
 
Amazon