8

奇妙なエラーがあり、時間を無駄にせずに対処する方法がわかりません。コントローラーに、次を使用してxmlを返すメソッドがあります。

  header("Content-type: text/xml");
  header("Content-Disposition: attachment; filename=output.xml");
  header("Pragma: no-cache");
  header("Expires: 0");

問題は、空の行のために出力が有効なxmlではないということです。どこから来たのかわかりません。これを修正する方法はありますか? この空の行か何かを無視するかもしれませんか?フレームワーク全体をデバッグしたくありません...使用しようとしまし var_dump(debug_backtrace())たが、おそらく教義のせいで1つの大きな混乱が発生しました。

4

7 に答える 7

20

<?php ?>ほとんどの場合、タグの前後に空行があります。メインファイルにない場合は、インクルードを見てください。

また、ちょっとしたヒント...ファイルが純粋なPHPの場合は、PHPタグで開始し<?php、決してPHPタグを閉じないでください。閉じる必要はありません。そうすれば、問題の原因となる最後の空白行を回避できます。

于 2012-04-10T20:42:59.830 に答える
5

また、ヘッダーの前にエラー メッセージがドキュメントに出力されます。しかし、エラーがない場合は、犯人を見つけるのが難しい場合があります。これを試して:

ob_start()

それを最初にスクリプトに入れます。これにより、呼び出すまで他に何も出力されないことが保証されます

ob_flush()

あなたには必要ないかもしれません(ob_flush)。

また、別のスクリプトの途中に含まれていたスクリプトが php タグの終了後に単一の文字を持っていたため、その単一の文字がヘッダーを押し下げて応答を無効にするという問題が発生しました。

したがって、必要がない限り、PHP の終了タグを使用しないという Brad の提案に従います。

于 2012-04-10T20:48:20.797 に答える
2

私は時々この問題に遭遇します。そして、それは非常にイライラすることがあります。:-) どちらにしても - これは役に立ちます。これにより、空の行の後に php 開始タグが続くファイルが表示されます。誤検知が表示されますが、検索をうまく絞り込むのに役立ちます。

pcregrep -Mron '\n\<\?php' .
于 2015-06-09T14:06:54.850 に答える
0

Plesk の更新後、空のファイル/tmp/.tmp.errauto_prepend_fileがあり、php 構成で自動追加されました。

そのため、すべての PHP スクリプトの前に空の文字列が追加されました。いくつかのユニークな状況ですが、おそらく誰かを助けることができます.

于 2013-05-16T10:32:28.690 に答える
0

ほとんどの場合、PHP タグの前後に空の行があります。これを修正する 1 つの方法は、常にexit、またはdie()XML ファイルを出力した後に行うことです。これにより、コードの最後にある余分な行が削除されます。ただし、ファイルの先頭に何もないことを確認するのはあなた次第です。

于 2012-04-10T20:44:59.947 に答える