Lognote

整体師によるお役立ち情報ブログ

cannot-modify-header-information-thumbnail

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

2017-04-09

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

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

関連記事

wordpress-category-tag-change-thumbnail

WordPressのカテゴリー⇔タグを変換して訪問者に親切なブログ作りをしよう

ブログ訪問者はサイドバーなどに設置されたカテゴリーから「Wordpressの記事数が多いから参考になる記事があるかも」「読書が好きな人なんだな」といったように、 …

custom-post-category-thumbnail

WordPressで通常の投稿かカスタム投稿か判断してカテゴリー名を表示する方法

普段使い慣れないカスタム投稿タイプを使ったところ、普通のカスタマイズと勝手が違い四苦八苦しております。 今回はそのなかでもだいぶはまった「カスタム投稿でのカスタ …

affinger4-hukidashi-thumbnail

WordPressでショートコードから会話風ふきだしを呼び出して表示させる方法

昨年12月、AFFINGER4に会話風ふきだし機能が追加されました。 これ、使い勝手良さそう! ただ、ふきだしのためだけにAFFINGER4に移行するのはリスク …

iphone-icon-black-thumbnail

WordPressでiPhone用アイコンの透過部分が黒くなる問題を疑似的に解決する方法

WordPressは、カスタマイズからサイトアイコンを簡単に設定できますが、iPhone用アイコンだと透過部分が黒くなってしまうというデメリットがあります。 そ …

share-count-display-thumbnail

WordPressの記事トップにSNSのシェア数を表示する

ブログをやるうえで、記事をバズらせるというのは一つの夢でもあります。 こちらのサイトによると、バズるブログの60%はファーストビュー(ページを開いたとき最初に目 …


コメントをどうぞ

lognote
2017/5/09
コメントありがとうございます。 本当にそうですよね。 通販サイトは、相手の顔が見えない分信頼第一で成り立っているので、Amazonにはマーケットプレイスの管理をしっかりやっていただきたいで...
匿名探偵
2017/5/09
ここ最近のamazonはちょっとヤバいですね。 4,5000円が相場で微小の変動しかしていなかった市場に、今年度に入って急に1000円切った値で断続的に出品するなど、異常な出品者が様々な商品に出没し...

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