cannot-modify-header-information-thumbnail

WordPressで”Cannot modify header information”の警告が出たときの解決方法

公開日:2017-04-09
最終更新日:

Pocket

WordPressテーマの制作中、管理画面のJetpackメニューの部分に

cannot-modify-header-information-01

Warning:Cannot modify header information

このような警告が出るようになりました。

Warningは警告なので重大な不具合が出るわけではありません。無視しても問題はなさそうですが、ずっと出た状態なのですごく気になります。

警告文を続けて読むと、headers already sent by ( output started at ~)となっています。

下記サイトによると、この警告はheader関数よりも前に余計な処理が割り込んでしまうことによって起こるものだそうです。

ということは、それを見つけて修正すれば「Warning:Cannot modify header information」は直りそうです。

「Warning:Cannot modify header information」の解決方法

原因のある箇所はrest-api.phpの513行目と書いています。

確認してみると下記のようなコードでした。

header( sprintf( 'X-WP-DeprecatedParam: %s', $string ) );

PHPマニュアルによると空白もダメということが書いてあり、このコードの上にも1行空白がありました。

覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 頻出するエラーとして、include または require 関数、他のファイルをアクセスする関数に 空白または空行があり、header() の前に出力が 行われてしまうというものがあります。同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。

PHP: header – Manual

ということで、とりあえず空白を以下のように詰めてみましたが警告は消えませんでした。

function rest_handle_deprecated_argument( $function, $message, $version ) {
	if ( ! empty( $message ) ) {
		/* translators: 1: function name, 2: WordPress version number, 3: error message */
		$string = sprintf( __( '%1$s (since %2$s; %3$s)' ), $function, $version, $message );
	} else {
		/* translators: 1: function name, 2: WordPress version number */
		$string = sprintf( __( '%1$s (since %2$s; no alternative available)' ), $function, $version );
	}
	header( sprintf( 'X-WP-DeprecatedParam: %s', $string ) );
}

そもそもこのファイルはいじったことがないし、STINGER8では問題もなくJetpackが使えているので他を疑うことにしました。

WordPressは全然違う箇所をエラー報告したりするのでハマる原因にもなります。本当に厄介です。

Google先生に頼って調べていると、また一つ解決方法が見つかりました。

「php.ini」の「output_buffering」の設定を変更する

php.iniのoutput_bufferingという項目をOnに変更すると直るらしい。

php.iniとは

php.iniはPHPを動かすときに読み込まれるファイルで、CGI版やサーバーモジュール版があります。

設定ファイル (php.ini) は PHP の起動時に読み込まれます。 PHP のサーバーモジュール版では、Web サーバーの起動時に 一度だけ読み込まれます。CGI 版と CLI 版では、スクリプトが呼び出される度に読み込まれます。

PHP: 設定ファイル – Manual

バッファという言葉はストリーミングの動画を見るときによく目にします。ある程度ダウンロードしてからその分の動画が見られるようになるアレですね。

つまりこの、output_bufferingをOnにすると情報をまとめてから発信するということになります。逆にデフォルトのOffだと順番にその都度送ることになるので、空白や割り込み処理を無視しなくなるので警告が出るということですね。

output_bufferingの変更方法

結果としてoutput_bufferingをOnにしたら警告が出なくなりました。

cannot-modify-header-information-02

レンタルサーバーのphp.iniという項目があるので、そこで変更します。ここではエックスサーバーを例に説明します。

まず、インフォパネルのphp.ini設定をクリックします。

cannot-modify-header-information-03

編集したいドメインを選びます。

cannot-modify-header-information-04

php.ini直接編集でoutput_bufferingの値を変更します。

cannot-modify-header-information-05

私の場合は”4096″となっていましたが、これを”On”と変えて保存します。

output_buffering = On

これで警告は消えるはずです。

以上、「WordPressで”Cannot modify header information”の警告が出たときの解決方法」という記事をお届けしました。

それでは、また。

オススメ商品はこちら!

-WordPress

ヤマカワ (@lognotebiz) の一言
警告の自力での対処は全くできないので、解説ブログが多いのもWordPressのメリットですね。本当にいろんな方に助けていただいております。ありがたい!
この記事のタイトルとURLをコピーする
WordPressで”Cannot modify header information”の警告が出たときの解決方法
この記事はいかがでしたでしょうか。
是非Lognoteの最新ニュース情報を、
いいねしてチェックしてください!

関連記事

advanced-code-editor-thumbnail

テーマ編集で行数を表示するWordPressプラグイン「Advanced Code Editor」

WordPress内でテーマを編集するとき行数表示がなくて不便だなと感じることはないでしょうか。今日はそんな悩 …

affinger4-hukidashi-thumbnail

WordPressで会話風ふきだしを表示させるCSSカスタマイズ

AFFINGER4に実装されている会話風ふきだし機能。あれってすごく便利そうですよね!この記事ではWordPres...

wordpress-comment-voice-thumbnail

動画も可!WordPressのコメント機能を使った口コミ掲載方法

整体院サイトをリニューアルする中で、「お客様の声」を掲載するための専用ページをどのようにするか迷...

instagram-bug-cause-tw-autolink-thumbnail

WordPressでInstagramの埋め込みが表示されない原因はこれだった!

Instagramの埋め込みが表示されないバグが発生しました。原因はfunctions.phpに記述した「Twitterの自動...

mts-simple-booking-c-fatal-error-thumbnail

「MTS Simple Booking-C」のフェイタルエラー解決方法

Web予約カレンダーを設置するプラグイン「MTS Simple Booking-C」にフェイタルエラーが出てしまいました...


コメントを入力

日本語が含まれない投稿は無視されます。(スパム対策)

トラックバックURL

管理人のヤマカワです
山形在住、整体院「癒眠」院長
3級ウェブデザイン技能士

にほんブログ村 ブログブログ ブログノウハウへ

ヤマカワ
2017/8/16
子テーマのコピー方法はカスタマイズの基本ですので省略してしまいました。 新しく別ページで解説記事を...
たろ
2017/7/31
子テーマにコピーするの所がわかりにくい
ヤマカワ
2017/7/25
キャッシュの削除は試されましたでしょうか。 それでも反映されないようでしたら、!important...
haruboshi
2017/7/24
全く反映されません。