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の最新ニュース情報を、
いいねしてチェックしてください!

関連記事

custom-field-affiliate-banner-thumbnail

カスタムフィールドを使ってAmazonアソシエイトやアフィリエイトバナーを記事毎に自由に貼り替える方法

今回はWordPressのカスタムフィールドを活用して記事下の広告エリアをカスタマイズする方法を紹介します。 …

letter-spacing-thumbnail

ブログ記事右端にできる不自然な空白をCSSで修正する

ブログ記事を作成して公開した文章をチェックすると、まれにテキストの右端が不自然なところで改行されていることはな …

thumbnail-blur-improvement-thumbnail

SIMPLESTER Ver6の記事一覧のぼやけたサムネイルをはっきり表示させる方法

SIMPLESTER Ver6で、記事一覧の右に表示されるサムネイルが、ぼやけて表示される方はいませんでしょう …

ボタンじゃないSNSのシェア数だけを表示する【WordPress】

ブログをやるうえで、記事をバズらせるというのは一つの夢でもあります。 こちらのサイトによると、バズるブログの6 …

comment-form-display-thumbnail

SIMPLESTER Ver6の記事下にコメントフォームを表示する方法【WordPress】

SIMPLESTER Ver6はデフォルトだとコメントフォームが表示されていません。 以下のコードを記述するこ …


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

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

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