wordpressで投稿ページの画面が真っ白になった時の対処法
先日、サーバーのPHPを5系から7系にバージョンアップしたら、運用していたwordpressサイトの投稿ページ(single.php)の画面が真っ白になってしまうエラーが発生しましたので、その対処法を紹介します。
目次
エラーの具合
こんな感じでした。
▼エラー時の状況
・トップページは正常
・page(固定ページ)も正常
・single(投稿ページ)は画面真っ白
画面真っ白になった時の対処法としては、パーマリンクの再設定がわりと鉄板なのですが、今回はそれでも治りませんでした。
となると、phpバージョンアップが原因=php関連のソースを見るべきと考えて、function.phpなどのファイルをチェック。ただ、このへんの構文をチェックしても問題はなさそう。
なので、wp-config.phpファイルで、エラー表示の設定にしてみたのですが、投稿ページが画面真っ白になってしまって確認できないため、エラーログも設定。
define('WP_DEBUG',true);
define('WP_DEBUG_LOG', true);
エラーログでようやく原因判明
ここでようやく分かったことは、投稿ページにだけ使っているphp構文があり、それが古い仕様でしか対応していないものだったので、ダメだったことが発覚しました。
エラー文
PHP Deprecated: Function ereg_replace() is deprecated in /home/****/****.php on line 5
使っていたソースはこちら
この「ereg_replace()」がダメだったんですね。どうやらphp6系以降、下記の関数は廃止になったそうです。
- ereg()
- ereg_replace()
- eregi()
- eregi_replace()
- split()
- spliti()
- sql_replace()
ってわけで、ereg_replaceをpreg_replaceになおしてあげて、正規表現をpreg_replace用に修正してあげると、画面真っ白現象もなおりました。
まとめ
wordpressで、phpのバージョンアップをした時に画面真っ白になった場合は、廃止になったphp関数を使っていることが原因かもしれませんので、チェックしてみてください!
参考サイト
▼ereg_replaceをpreg_replaceに書き換えた
http://harukomugi.sakura.ne.jp/blog/2014/07/17/ereg_replace%E3%82%92preg_replace%E3%81%AB/
▼phpのeregでDeprecatedエラーが出てるから調べてみたら使えなくなるという非常事態が発生
http://www.promeshi.com/archives/153