2022/06/11 Podcastはしばらくお休みします。
WordPress「サイトに重大なエラーがありました」の解消方法
こんにちは。安慶名勇子(アゲナユウコ)です。
WordPressにてホームページを運用されている方の相談に乗っていたときのこと。サーバーに設定されているPHPのバージョンがすでに非推奨になっていたため、推奨Verに更新してもらったところ、カスタム投稿タイプを利用しているページにて多数のPHPエラーが表示されてしまいました。また、個別投稿ページにアクセスするとこのようなエラーページが表示され、肝心のコンテンツには一切アクセスできないという状態に。

この現象を解消したので、その方法を記録しておきます。
どのファイルでエラーが出ているのかを調べる準備
どのファイルでエラーが出ていないかを調べないことには修正もできないので、まずはログを取ってみることに。ネットで調べてみると、wp-config.phpファイルのデバッグ記述を
define(‘WP_DEBUG’,false );
↓
define(‘WP_DEBUG’, true);
に書き換えれば、wp-contentフォルダ内にログファイルが作成されると記載しているサイトが多くみつかりました。しかし、その方法ではログファイルができなかったんですよね。
さらに、エラー解析をしている間もサイト上にはPHPエラーが表示されているので、ひとまずサイト上のエラーの表示を非表示にするコードも追加しました。具体的な手順は下記の通り。
デバッグ準備の手順
- FTP接続ソフトにてサーバーにアクセス
- 該当サイトフォルダ配下にあるwp-config.phpファイルをダウンロード
- wp-config.phpをテキストファイルで開く
- define(‘WP_DEBUG’, false);の記述を探す

- 探した箇所を下記のように変更・保存する

下記コードをコピー&ペーストすると楽です。
1 2 3 4 5 6 7 8 |
define('WP_DEBUG', true); if ( WP_DEBUG ) { define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0); } |
- FTP接続ソフトにて該当サイトフォルダにアクセス
- wp-config.phpファイルをアップロード(上書き)
- テキストファイルでdebug.logという名称の空ファイルを作成する
- FTP接続ソフトにて該当サイト配下のwp-contentフォルダにアクセス
- debug.logをwp-contentフォルダにアップロード

デバッグの準備がこれで完了しました。
サイトでエラーを発生させてみる
サイトにアクセスし、「サイトに重大なエラーがありました」というエラーを出します。このエラーさえ出ればデータ取得はできるので、どの個別投稿にアクセスしてもOK。
ログファイルを解析する
FTP接続ソフトにて該当サイト配下のwp-contentフォルダにアクセスし、debug.logをダウンロードします。テキストファイルで開くとこのような記述がありました。どうも、header.php内のereg_replace()という関数でエラーが起きている様子。

PHP7対応の関数に変更する
ereg_replace()は、正規表現による置換を行う関数ですが、PHP 5.3以降は非推奨、PHP7では削除されているとのこと。どおりでエラーが出るわけだ…。ということで、ereg_replace()を新しい関数preg_replace()に書き換えます。
修正手順
- WordPress管理画面の「外観」「テーマエディタ―」へアクセス
- 右サイドバーに表示されるheader.phpを選択
- ログに出力されている行番号をもとにereg_replace()を探す

- preg_replace()に書き換える

- 「ファイルを更新」を押して完了
テーマエディタ―から更新できない場合は、FTP接続ソフトでサーバーから該当ファイルをダウンロードし、書き換え&アップロードを行えばOK。
- サイトにてエラーが解消されていることを確認する
ひとまず解消したものの…
上記修正でサイトのエラーは解消されました。
PHPのバージョンアップによるプログラムエラーだったわけですが、テーマのメンテナンスを自分で行わなければならない場合、このようなエラーはまた出てくるでしょう。PHPのバージョンは今後もどんどんアップしていきますから。その都度、自分でエラー解析&対処をしなければならないとなると、プログラムに精通している人でない限り、かなりハードルが高いのではないでしょうか。
そう考えると、購入後もしっかりテーマのメンテナンスを行ってくれるところってありがたいですね。その点、TCDはこまめにアップデートしてくれるので助かっています。有料テーマを購入する価値はここにあると思っています。
ちなみに、このブログで使用しているWordPressテーマはこちら。
というわけで、PHPバージョンアップによる「サイトに重大なエラーがありました」の解消方法でした。