前回の記事では、サーバーのPHPバージョンを7.2に上げた際に、WordPressサイトにおいて、画面が真っ白になると同時に、エラーメッセージが表示され、その対応について掲載しました。
詳しくは⇒「お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです。」
その際、WordPressのバージョンアップを行うことにより、エラー表示は解消できたものの、その後もWordPressサイトの画面が真っ白の状態は変わりませんでした。
一旦、前のPHPバージョンに戻し、対応をいろいろ調べてみたところ、どうやら、現行のインストールしているWordPressのプラグインに問題がありそうだということがわかりました。
今回は、PHP7.2で、画面が真っ白になった際のプラグインに対する対応についてまとめてみました。
問題のあるプラグインの検出
いろいろ調べてみたところ、画面が真っ白になるという事例で、インストールしているプラグインの中のどれかが問題があるというような記事が多かったもので、早速、自分のプラグインも調べてみました。
調べるにあたり、指定のPHPのバージョンに対するWordPressのテーマ、およびプラグインの互換性を確認できるプラグインである「PHP Compatibility Checker」を利用しました。
サーバーでPHP7.2に上げ、画面が真っ白になる前に、この「PHP Compatibility Checker」で確認しておけばよかったわけですが、サーバー側ですぐに元のPHPバージョンに戻せるという気安さから利用していませんでした。
今回、遅ればせながら、早速、「PHP Compatibility Checker」をインストールし、互換性を確認してみることにしました。
「PHP Compatibility Checker」による検証
「PHP Compatibility Checker」をインストールし、WordPressの管理画面のメニュー[ツール]⇒[PHP Compatibility]を選択し、「PHP Compatibility Checker」画面を開きます。
検証したいPHPバージョンを選択し、すべてのプラグインとテーマをスキャンするのか、あるいはアクティブなプラグインとテーマをスキャンするのかという選択肢では、とりあえず、アクティブ(有効化している)プラグインとテーマのスキャンを選択し、「Scan Site」ボタンを押します。
すると、自分のサイトの場合、以下のような結果になりました。
この結果を見ると、現在インストールしているプラグインの内、「Exec-PHP」と「WP-Note」が、[Errors]と赤く警告表示がされています。
「Exec-PHP」は、WordPress記事内でPHP構文を使用できるようにするもので、「WP-Note」は、記事の重要箇所を付箋ぽく背景色で囲って強調するためのプラグインです。
いずれも前々から、あまり評判の良くなかったプラグインです。
この2つのプラグインを停止して、再度、PHP7.2に上げてみて、挙動を確認したいところですが、いずれも現在、有効化していて、利用中のプラグインです。
いきなり停止しては、表示に影響が出てしまいます。
そこで、ここでも活躍したのが、さくらのサーバーに付いている「ステージング機能」です。
詳しくは⇒「さくらのバックアップ&ステージング機能の使い方(Snapup)」を参照。
ステージング機能で設定したステージングサーバーのテスト環境で、まず、「Exec-PHP」を停止して確認してみたところ、今度はPHP7.2の環境下でも、画面が真っ白になるということも無く、正常に表示されることが確認できました。
しかし、ほとんどのページで正常に動作するのですが、一部、「WP-Note」を使用しているページについては、記事のタイトルより下の部分の記事本文が表示されないという現象が起きました。
なので、引き続き、「WP-Note」を停止してみたところ、今度は無事正常に表示されました。
その他、「PHP Compatibility Checker」では、黄色く[Warnings]と表示されたプラグインもありましたが、それらには手を付けず、赤く[Errors]と表示されたプラグインの停止だけでクリアすることができました。
問題のあるプラグインへの対処
さて、テスト環境で、2つのプラグインを停止すれば、PHP7.2の環境下でも正常に表示されることが確認できたわけですが、本番サーバーで、現在使用しているプラグインをいきなり停止してしまうわけにはいきません。
まずは、これらのプラグインに代わる他のプラグインを見つけるか、それ以外の方法で代用しなければなりません。
「WP-Note」への対処
「WP-Note」については、もともとあまり使用していなかったため、現在、使用している箇所については、cssで同じ装飾にすることで対処しました。
「Exec-PHP」への対処
「Exec-PHP」についても、これも一部のページのみで使用していただけですが、いろいろ探してみたところ、なかなか同じようなプラグインが見つかりませんでした。
そこで、function.php内にショートコードを設定し、これまで「Exec-PHP」で記述していたPHPコード部分に対応しました。
以上のように対処し、正常に動作するかどうかを確認したうえで、本番環境で2つのプラグインを停止し、サーバーのPHPバージョンを7.2に上げたところ、無事、本番環境でも画面が真っ白になることなく、正常に表示されました。
ちなみに、問題のあったプラグインについては、削除はせず、停止のみでクリアできました。
まとめ
これまで、PHPのバージョンを変更しても、ここまでのトラブルはあまり経験がありませんでした。
PHP7.2に上げて、画面が真っ白になった時は、正直、一瞬あせりましたし、対応もかなり面倒なものでした。
PHP5からPHP7と内容にも大幅な変更があったものと思われます。
今回、PHP7.2にバージョンアップし、画面が真っ白になってしまうという現象に対し、プラグインのみの対応でクリアできましたが、環境によってはそれ以外の要因もあるのかもしれません。
しかし、できるだけ事前に回避するために、この記事でも紹介しました「PHP Compatibility Checker」で問題点を検証しておくか、PHP7.2にバージョンアップする前に、「XAMPP(ザンプ)」などのテスト環境で試してからバージョンアップをした方がいいのではないかと思いました。