PHPファイルの最後
PHPファイルの最後の終了タグ?>はなんで省略するにゃ?
引用
まず、PHPのマニュアルのPHPタグのページを読んでみるにゃ。
ファイルが PHP コードのみを含む場合は、ファイルの最後の終了タグは省略するのがおすすめです。 終了タグの後に余分な空白や改行があると、予期せぬ挙動を引き起こす場合があるからです。 余分な空白や改行のせいで PHP が出力バッファリングを開始し、その時点の内容を意図せず出力してしまうことになります。
PHP タグ
あと、HTTPヘッダーを出力する、PHPのマニュアルのheaderのページも重要にゃ。
覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 頻出するエラーとして、include または require 関数、他のファイルをアクセスする関数に 空白または空行があり、header() の前に出力が 行われてしまうというものがあります。同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。
header — 生の HTTP ヘッダを送信する
出力のバッファリングを使用してこの問題を回避することができます。
header — 生の HTTP ヘッダを送信する
HTTPヘッダの送信前に余分な文字を出力してはいけない
PHPル
(余分な文字)
<?php
PHPコード
?>
(余分な文字)
プラグインのPHPファイルやテーマのfunctions.phpのファイルの先頭や、ファイルの最後に余分な文字があるとHTTPヘッダーの送信前に余分な文字を出力してしまい、正常なHTTPプロトコルとして扱われなくなってしまうので、真っ白なページを表示したりしてしまうにゃ。それを防止するために開始タグは省略はできないけれど、終了タグを省略して改行や空白等気づきにくい余分な文字を出力しないようにしているにゃ。テンプレートはもうHTTPヘッダの送信APIを呼び出した後なので、PHP終了タグの後に余分な改行とかを入れたとしてもHTMLとして扱われるだけなのであまり問題にならないにゃ。
それで、テーマのfunctions.phpとプラグインは最後のPHP終了タグを省略した方がいいんだにゃ。
ただ、PHPの設定ファイルphp.iniのバッファの設定でoutput_buffering=4096等と設定してあると、4096文字まではバッファに出力されるだけなので、多少余分な改行や空白があっても問題が起きないにゃ。
では、そんなに気にしなくていいのかなにゃ。
そこは環境によるのでローカルで試して問題なくても、本番サーバーで問題が出ることがあるにゃ。PHPファイルは構文エラー等があると管理画面が使えなくなることもあるので、FTP等ですぐ元に戻せるようにしておくことも大事だにゃ。
php.iniやoutput_bufferingに関して、くわしくは以下を参照するでありますにゃ。