PHP警告: ヘッダー情報を変更できません
English version: PHP Warning: Cannot modify header information
PHP 警告: ヘッダー情報を変更できません – ヘッダーはすでに送信されています…
サーバーのエラーログやウェブページに表示されることがあります。これはイライラさせられるもので、メッセージに記載されているPHPスクリプトに何らかの問題があるように見えます。実際には、このメッセージは別のスクリプト、プラグイン、またはテーマに問題(バグ)があることを示しています。バグのあるプラグインを使用していて、通常は表示されないはずのPHPエラーの表示が有効になっている場合、このメッセージが表示されることがあります。
このメッセージは、ウェブサイト上のPHPコードの一部が出力を生成した際に表示されます。通常、この出力はPHPの警告メッセージであり、ユーザーのブラウザに送信・表示されることはありません。この出力は、ウェブページのヘッダーが生成され、ユーザーのブラウザに送信される前に送信されます。ウェブページのヘッダーは空の場合もあれば、Cookieなどの追加情報を処理する場合もあります。
ヘッダーが空であるかどうかに関係なく、ページ コンテンツの前に送信する必要があります。
バグのある WordPress プラグインが、他のプラグインがブラウザーにヘッダーを送信する前に PHP 警告を生成すると、 「PHP 警告: ヘッダー情報を変更できません – ヘッダーは既に送信されています…」というメッセージとともにサーバー エラーが発生します。
このようなメッセージは、どのスクリプトやプラグインがこのエラーを引き起こしたのかを示さないため、誤解を招く可能性があります。ウェブサーバーは、プラグインによって生成された出力にヘッダーが送信されていないことを検出すると、自動的にヘッダーを作成してブラウザに送信します。そのため、このような動作を想定していない他のプラグインは、必要に応じてヘッダーを送信できません。
WP Cerber Securityの使用中にこの問題を解決する方法
- ホスティングコントロールパネルのPHP設定でエラー表示を無効にしてください。PHP設定にアクセスできない場合は、ホスティングプロバイダーにお問い合わせください。
- 強化管理ページの WP Cerber 設定で PHP エラーが表示されないようにします。
- WP Cerber のメイン設定で、「セキュリティ エンジンの読み込み」を「標準モード」または「詳細モード」に設定します。
- wp-config.php ファイルでWP_DEBUG定数が定義されているか確認してください。二重スラッシュ「//」で囲まれた行をコメントアウトするか、行全体を削除してください。正しい定義は以下のとおりです。
// define( 'WP_DEBUG', true );
// define( 'WP_DEBUG', 1 ); - wp-config.php ファイルの先頭に次の行を追加します。
@ini_set( 'display_errors', 0 );
@ini_set( 'log_errors', 1 );
WP Cerber または WordPress が問題の原因でしょうか?
いいえ。この問題を引き起こす可能性のあるコードは、古い/バグのあるプラグイン、または有効なテーマのいずれかです。根本原因を特定するにはどうすればよいでしょうか?サーバーのエラーログを確認してください。また、古いプラグインを削除してください。