【WordPress】「プラグインを有効化する際に、xxx文字分の予期しない出力が生成されました」の解決方法

  • 投稿 : 2015-12-09
  • 更新 : 2016-11-30
headers-already-sent01.png

このプラグインを有効化する際に、4文字分の予期しない出力が生成されました。もし “headers already sent” エラーメッセージ、配信フィードの問題などが発生する場合は、プラグインを無効化または削除してください。

The plugin generated 4 characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.

文字数は4文字でなくて他の場合もあり得ます。

1.UTF-8(BOMあり)で、BOMコードがあることが原因
2.<?phpの前に空白などがあることが原因
3.?>より後ろに空白などがあることが原因
4.「プラグイン有効化(register_activation_hook())」のタイミングで「echo」している

1.UTF-8(BOMあり)で、BOMコードがあることが原因

Windowsのメモ帳は、(BOMあり)にしかできないので、他のエディターでUTF-8(BOMなし)で保存してください

2.<?phpの前に空白などがあることが原因

プラグインの時は、<?phpの前には、なにも書いてはいけません。エラーになります。Wordpressのプラグインの仕様みたいです。

3.?>より後ろに空白などがあることが原因

<?pho //コード ?>
のようにPHPコードを埋め込むのですが、ファイルの最後に?>なる場合は、「?>」を省略することが可能です。省略した書き方をしているとこの手のエラーに遭遇することはなくなります。

A.2.1. 全般
PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。終了タグは、PHP には必要ありません。終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。

入門書等では、PHPコードを書く場合は「<?php」と「?>」で囲われた中に書きましょうというのが一般的ですが、PHPのコードのみからなるファイルでは最後の?>を省略したほうがいいとのことです。

これは、ファイルの最後に余計な改行・空白等が含まれてしまうと表示や動作に影響してしまうためです。
PHP TIPS - 16. PHPの最後の?>は不要なんです:ITpro

?>は省略できるので、省略したほうがこの手のトラブルから逃れられる

4.「プラグイン有効化(register_activation_hook())」のタイミングで「echo」している

自作でプラグインを作成している場合とかに、やりがちな失敗だと思います。このタイミングでは、echoをすると必ずエラーになります。だから、echoできません。Wordpressのプラグインの仕様みたいです。


参考:
reCatnap: WPプラグインを有効化しようとするとエラーになった。 » PCスキルの小技・忘却防止メモ
プラグインの有効化で出るエラー | You Look Too Cool
「headers already sent」と表示されるとき | PHPプログラミングの教科書 [php1st.com]

スポンサーリンク