2010年07月26日

PHPの出力の先頭に改行が入る問題

かなり初歩的な内容ですが。。。

いまだに Mojavi を使っているサービスがあるのですが、そのサービスで XML を出力しようとしたところ、


<?xml version="1.0" encoding="utf-8"?>
と先頭に改行がいくつか入ってしまっていました。
先頭が <?xml で始まっていないと、Firefox では
XML パースエラー: 実体の初めに XML またはテキスト宣言がありません。
URL: http://hoge.com/xxx.xml
行番号: 3, 列番号: 1:

<?xml version="1.0" encoding="utf-8"?>
^
というようなエラーが表示されてしまいます。

XML として正しく処理されるには、この先頭に入ってしまう改行をなんとかしないといけません。
Mojavi が怪しいのか、Smarty が原因なのかと色々調べてみたところ、 PHP コードの末尾の ?> の後に改行が入っているとこのようなことになってしまうという話でした。

直接呼び出されるファイルだけではなく、require などで読み込まれる PHP の ?> の後に改行が入ってもこのようなことになってしまうので、すべての PHP ファイルを調べる必要があります。
また、改行コードの違いで、LF だけではなく、CR も削除する必要があります。
ラベル:PHP
posted by おちエン at 17:27| Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。