WordPressを運営してみると、さまざまな技術的問題に直面することができます。この時点で、問題の根本原因を特定するためにデバッグモードを有効にできます。
この記事では、デバッグモードとは何か、デバッグモードを有効にしてエラーログを確認する方法、およびエラーメッセージをどのように理解するかについて説明します。
デバッグモードとは?
デバッグモードは、ソフトウェア開発中にエラーを見つけて修正するために使用する特別な実行モードです。一般的な使用モードとは異なり、デバッグモードではプログラムの実行プロセスを段階的に追跡し、変数値の変化を確認し、エラーの発生時期と原因を特定するためのさまざまな情報を提供します。このモードは、開発者がプログラムの論理エラー、例外処理の問題、メモリリークなど、さまざまなバグを見つけて修正するために不可欠なツールであり、プログラムの信頼性と信頼性を高める上で重要な役割を果たします。
WordPressのデバッグモードは、PHPエラー、警告、通知を確認する機能です。基本的に WordPressセキュリティのためにデバッグモードを無効にするので、問題の正確な原因を特定することは困難です。サイトでエラーが発生した場合は、デバッグモードを有効にして原因を特定できます。
デバッグモードを有効にする方法
WordPress サイトに重大なエラーが発生した場合、サイトにアクセスすると「このウェブサイトに致命的なエラーがあります。 WordPress フェイルバックについてさらに詳しく」エラーが表示されます。
場合によっては、何らかのエラーが表示されず、白い画面が表示されて接続ができない場合もあります。
サイトのエラーを解決するには、まず原因を特定する必要があります。原因把握の第一歩であるエラーログを確認することです。
エラーログは、ソフトウェアシステムで発生した問題と例外状況を記録する重要な診断ツールです。システムの動作状態を追跡し、障害が発生した場合の根本原因を特定するのに重要な役割を果たします。エラーログは通常、DEBUG、INFO、WARN、ERROR、FATAL などの重大度レベルに分けられます。これにより、開発者とシステム管理者は問題の場所、発生時間、詳細を把握できます。
WordPressでは、デバッグモードを有効にしてエラーメッセージを確認できます。
WordPress サイトでデバッグモードを有効にする
デバッグモードを有効にするには、FTP / SFTPに接続して WP-config.phpを ファイル内のデバッグモード(WP_DEBUG) trueに変更する必要があります。これを行うには、FTPに接続できる必要があります。
たとえば、PCで ファイルBugzillaの(FileZilla)を使用してFTPに接続する場合 WordPressがインストールされているルートフォルダに移動し、 WP-config.phpを ファイルの上にマウスを置き、右マウスボタンを押して 表示/編集をクリックします。
WordPress 構成ファイルで次の行を検索します。
define('WP_DEBUG', false);
WP_DEBUGで検索して上記のコードを見つけることができます。基本的には上記のように WP_DEBUGは falseに設定されています。 false를 trueに変更します。
define('WP_DEBUG', true);
デバッグモードを有効にすると、サイトに特定のエラーメッセージが表示されることがあります。
上記の画面では チャイルドテーマの関数ファイル(functions.php)にyour_function()関数が重複して定義され、致命的なエラーが発生する例を示します。この場合、問題となる関数を削除するとサイトが正常化されます。
wp-config.phpファイルが見つからない場合は、以下の「付録:wp-config.phpファイルの場所が見つからない場合「部分を参考にしてください。
管理者ページにアクセスできる場合は、エラーログモニタプラグインを使用してエラーログを確認する
サイトにはアクセスできませんが、管理者ページにアクセスできる場合は エラー・ログ監視というプラグインをインストールして、通知パネルでPHPエラーログを確認することもできます。
通常、サイトに重大なエラーが発生すると管理者ページにもアクセスできないことが多いため、この方法を制限的に使用できます。
エラーログを理解する
PHPエラーには、次のエラータイプがあります。
- Fatal Error (致命的なエラー): サイトの動作を完全に中断させる重大なエラー
- Warning (警告): 深刻ではないが注意が必要なエラー
Fatal Errorは必ず解決しなければなりませんが、Warningは深刻ではないため、必ずしも解決する必要はありません。
Fatal Errorの原因はさまざまです。例:
- 未定義の関数呼び出し: Fatal error: Uncaught Error: Call to undefined function...
- 存在しないクラス参照: Fatal error: Uncaught Error: Class 'ClassName' not found...
- PHP 構文エラー: Fatal error: Parse error: syntax error, unexpected '{'...
- メモリ不足エラー: Fatal error: Allowed memory size of X bytes exhausted...
- プラグイン/テーマの競合によるエラー: Fatal error: Cannot redeclare function/class...
- ファイル アクセス許可エラー: Fatal error: Uncaught Error: Failed to open required file...
上記のようなエラーが発生すると、サイトに重大なエラーが発生したため、問題の原因を特定して解決する必要があります。
PHPの構文エラーは、PHPのバージョンが互換性がないか、PHPの文法が間違っていることが多いです。たとえば、次の構文エラーはクラウドウェイです。 Cafe24でホストされているサイトで発生する可能性があります。
Parse error: Unmatched '}' in /home/123456.cloudwaysapps.com/abcdefgh/public_html/wp-content/themes/avada-child/single-movie.php on line 139
上記のエラーが発生した場合は、まずそのエラーが発生したファイルで問題のコードを確認してください。
<? if(get_field('movie_genre')){ ?>
上記と同じ行でエラーが発生する可能性があります。 'short_open_tag'機能が 'off'に設定されている場合、
クラウドウェイズデフォルトでは 'short_open_tag'機能は無効になっています。サーバー設定で ショートオープンタグを有効にすると問題が解決します。または
警告は通常無視できますが、可能であれば解決することが望ましいです。たとえば、このサイトでは Tocerという目次プラグインがインストールされていますが、訪問者がサイトを訪問するたびに以下のエラーが発生しています。
PHP Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /home/public_html/public_html/wp-content/plugins/tocer/inc/class-composite.php on line 264
このサイトにはPHP 8.3バージョンが適用されています。 TocerプラグインがPHP 8.3と完全に互換性がないため、このエラーが発生しています。しかし、プラグイン機能に問題はありません。
プラグインの動作に問題はありませんが、このエラーが大量に繰り返し発生する場合は、サーバーリソースを使い果たす可能性があるため、望ましくありません。実際には、このような問題のためにトラフィックが素早く所持されることもあります。
トラブルシューティング後
WordPressで致命的なエラーが発生した場合は、まずデバッグモードを有効にして問題の原因を特定し、問題を解決できます。トラブルシューティングを試みる前に サイトのバックアップをしてPCやクラウドストレージに保管するのが安全です。
具体的には、以下の原因による WordPress サイトの問題が発生する可能性があります。
- プラグインの互換性の問題
- プラグイン間の競合
- 古いプラグインと最新 WordPress バージョン間の非互換性
- テーマに関する問題
- テーマと WordPress バージョンの不一致
- カスタマイジングによるエラー
- サーバーとWebホスティングに関する問題
- PHP設定値の問題
- 無効なサーバー設定
- データベース(DB)接続エラー
- PHPバージョンの問題(古いPHPバージョン)
- ファイルと権限の問題
- .htaccessファイルの破損
- 不適切なファイル/フォルダ権限(パーミッション)設定
- セキュリティとアップデートに関する問題
- 長い間更新していない WordPress バージョン
- マルウェア(マルウェア)感染
- セキュリティの脆弱性
- ユーザーのミス
- 無効なサイトアドレスの変更
- 不適切なプラグイン/テーマのインストール
- 技術的な問題
- PHPバージョンの互換性
- サーバーリソース不足
- コアファイルの破損
WordPressを安全に利用するには、定期的にバックアップしてください。 WordPress コア、テーマ、プラグインを常に最新バージョンに更新して最新の状態に保つ必要があります。
問題が解決したら、wp-config.phpファイルでデバッグモードを再度無効にします。
define('WP_DEBUG', false);
デバッグモードを無効にせずに有効にすると、セキュリティ上の問題が発生する可能性があり、重大でないエラーが訪問者に表示される可能性があります。
問題が解決されない場合は、
通常、デバッグモードを有効にすると、サイトで発生したエラーログを確認して原因を特定できます。これにより、トラブルシューティングの方向を把握できます。
ただし、前述のようにサイトで致命的なエラーが発生していますが、デバッグモードを有効にしてもエラーメッセージが表示されないことがあります。このような場合、問題の原因を推測することができないため、トラブルシューティングが容易ではない可能性があります。
問題が解決しない場合、最も簡単な方法はサイトを過去のバージョンにロールバックすることです。バックアップがある場合は、バックアップを使用してサイトを復元できます。
Cafe24ナ ファーストコメット, ケミクラウド、クラウドウェイズなどのホスティングでは自動復元機能を提供し、簡単に過去のバージョンに戻すことができます。
ただし、サイトをロールバックすると、バックアップ後に変更された内容や追加された内容はすべて消えますので、慎重に決定してください。
いろいろな対策にも WordPressウェブホスティングに関する問題を解決するのが難しい場合は、サービス(有料)をリクエストできます。
付録:wp-config.phpファイルの場所が見つからない場合
一般的なWebホスティングを利用する場合は、FTP/SFTPにアクセスすれば簡単にwp-config.phpファイルを見つけることができますが、Amazon AWSやVultrなどからサーバーを直接作成して WordPress サイトを運営する場合、 WordPress インストールパスを見つけることは初心者にとって簡単ではないかもしれません。
WordPress 管理者ページにアクセスできる場合 WordPress ダッシュボード»ツール»サイトの健康»情報タブの ディレクトリとサイズ セクションで WordPress ディレクトリの場所を確認することができます。
管理者ページにアクセスできない場合は、SSHに接続して次のコマンドを発行して確認できます。
find . -name wp-config.php
この方法を使用するには、SSHへのアクセス権が必要です。一般的なWebホスティングでは、セキュリティ上の問題のためにSSHアクセスを提供していませんが、AWSまたはVultrでサーバーを運用している場合はSSHアクセスがあります。
WordPressでデバッグモードを使用する方法について説明しています。デバッグモードを有効にすると、エラーを簡単に確認できることが役に立ちます。しかし、これを初めて接する人には少し難しいと思います。私も一度試してみるべきです。エラーログを確認する過程が混乱することがありますが、よく従うと良いと思います。
WordPress サイトで問題が発生した場合は、デバッグモードを有効にしてエラーログをチェックして問題を解決するのに役立ちます。