現象
ビューのテンプレートをXHTML形式にしている場合に、ブラウザで以下のようなエラーがでた場合の対処法は以下のとおり。
XML パースエラー: 実体の初めに XML またはテキスト宣言がありません。
行番号: 1, 列番号: 3:
--^
想定原因
phpの閉じタグ(?>)の周辺にバグを作りこんだ可能性が高いということ。エラーが出た画面(もしくはその前)のコントローラで読み込んでいるライブラリやモデルがあやしい。
発生傾向
重層なモデルがあるフレームワークや他人のライブラリを沢山使用しているとき稀に起きる
発生ケースの例
/* CASE1 phpの閉じタグとEOFの間にスペースがある。 */
?> [EOF]
/* CASE2 phpの閉じタグ直後の改行とEOFの間にスペースがある。*/
?>
[EOF]
対策
対処法としては、phpの閉じタグ以降は、スペース(改行も)を入れないように注意。もしくは、閉じタグ自体を初めから書かないことかな(全てという意味ではない)。どちらにしても、後で見つけたり変更するのは面倒なのでコーディング規約を決めるときは忘れずに盛り込んだ方が無難。
XHTML対応が増えるとこういう問題が表面化しますな。