【WordPress】PHP7変更「時々」エラーとアクセス数激減 原因と対策

WordPress(ワードプレス)で、サーバーのPHPのバージョンを5から7にアップデートした後に「時々」エラーが返る、500エラーが大量に返る、アクセス数が激減した理由と対策が分かったのでまとめたいと思います。

PHPのバージョンアップの警告

【WordPress】PHP7変更「時々」エラーとアクセス数激減 原因と対策-06

WordPressのダッシュボードに、しばらく前から「PHPの更新が必要です」というメッセージが出るようになりました。

「サーバーのPHPのバージョンが低いので最新のものに変更してください」ということですね。

取り急ぎPHP7.2に更新したのですが、問題があるようで「このサイトは現在技術的な問題が発生しています」とエラーになってしました。

運営しているいくつかのWEBサイトでは切り替えのみで上手くいったのですが、使用してるプラグインもしくはテーマによっては調整が必要のようです。

「技術的な問題」と表示される場合

PHPのバージョンアップ後、「このサイトは現在技術的な問題が発生しています」と表示されてサイトが見れなくなった場合はプラグインもしくはテーマに問題があります。

一旦、PHPのバージョンを戻してからまずは「プラグインの更新」を行ってみます。

プラグインを全て最新のものにした状態で再度PHPを上げてみて、解決されない場合は「対応していないプラグイン」がある可能性があります。

もしくは、使用しているテーマを最近のテーマに変えてみても解決されない場合はテーマに問題がある可能性があります。

まずはプラグインから調べてみましょう。

PHPエラーを見つけるプラグイン

PHPのバージョンを上げる前に、あらかじめ対応していないプラグインを見つけられるプラグイン「PHP Compatibility Checker」があります。

参考:PHP Compatibility Checker

アップデートしたいPHPのバージョンを選択し検索することで、現在使用しているプラグインが対応しているかを教えてくれます。

僕の場合、「Exec-PHP」が原因でした。

使っていなかったので、停止して削除することで解決しました。

引き続き「Exec-PHP」を利用したい場合は、少し手直しが必要のようですね↓↓↓

参考:[WirdPress]PHP7.1でエラーが発生「Exec-PHP」を修正

PHP変更後、急激にアクセス数が落ちた

無事にPHP7.2に変更でき安心していたところ、その日から急激にアクセス数が落ちたんですね。

ページは問題無く見れるので、PHP変更による「一時的なもの」だと思っていました。

しばらく待てば回復するものと思っていたのですが、「Broken Link Checker」で徐々に500エラーが返ってくるようになったんです↓↓↓

【WordPress】PHP7変更「時々」エラーとアクセス数激減 原因と対策-01

リンクが壊れているのかと思ったのですが、URL先は正しく表示されていたんですね。

インデックス登録が外されていた

サーチコンソールを見てみると、クロールエラーが大量に発生していました↓↓↓

【WordPress】PHP7変更「時々」エラーとアクセス数激減 原因と対策-02

それにより、今まで検索でヒットしていたページが全て存在しないページとして扱われるようになっていたんですね。

これがアクセス数が激減した理由です。

たまにスマホで表示がエラーになる現象

思い返すと、Twitterから自分のブログリンクを確認するときに「時々」本文が表示されない現象が起きていました。

ページを更新することで表示は復活するので問題は無いのかなと思っていたのですが、これがクロールエラーの原因だったんですね。

上記を見ると「スマートフォン用Googlebot」という記載があります。

言われてみれば、本文が表示されないエラーはスマホから見たときだけなんですよね。

「the_content()」が原因のようです。

調べてみると、「the_content()」が時々エラーを返すようです。

「the_content()」を「get_the_content()」に変更することで回避できました↓↓↓

参考:WordPressを高速化。PHP7に変更する際のテーマやプラグインの注意点

ただ、変更しただけだと表示が崩れるので最終的にこちらのコードで解決しました↓↓↓

<?php
$content = do_shortcode(get_the_content());
$content = preg_replace("/n/","<br />",$content);
echo $content;
?>

これで改行とショートコードも有効になります。

get_the_content()でもエラーが出る

エラーになっていたブログの1つはこれで解決したのですが、テーマが元々「get_the_content()」を使ってるものでもエラーになっていました。

もう一度「PHP Compatibility Checker」で調べてみると、「WP-SpamFree」に大量のエラーが出てたんですね↓↓↓

【WordPress】PHP7変更「時々」エラーとアクセス数激減 原因と対策-03

上から順に試していたので、一番下の「WP-SpamFree」を見落としていました。

ひとつづつ試して動いたら辞めるのではなく、エラーが出るものは全てに対応する必要があるということですね。

全てが面倒な場合は、エラーが多い順に対応していくと良いかもしれません。

原因は「Exec-PHP」と「WP-SpamFree」

今回のエラーの原因は「Exec-PHP」と「WP-SpamFree」でした。

どちらも削除して、必要であれば他の方法を考えます。

「Broken Link Checker」で再確認をすると「200 OK」が返ってきました↓↓↓

【WordPress】PHP7変更「時々」エラーとアクセス数激減 原因と対策-04

サーチコンソールでも↓↓↓

クロールエラーが消えました。

これで安心ですね。

また問題が見つかったら報告します。

Byさちお

\ SHARE /