1

これは私が数日前に尋ねた質問のフォローアップ質問であり、最終的には自分自身を解決することができました。根本的な問題を見つけてうれしく思いましたが、問題が3つの環境のうちの1つでしか現れなかったという事実は本当に奇妙に思えます。

この問題は、コントローラーでリダイレクトされていたCakePHP 2.3.0サイトでのアクションに関係していました($this->redirect(...);)。

基本的に、リダイレクトは私のローカル(Mac OS X / 10.6.8、Apache / 2.2.17、PHP / 5.3.4)開発マシンと同僚(Windows 7、Apache / 2.4.2、PHP /5.4)で正常に機能しました。 3)。「追加」アクションは、データベースにレコードを挿入してから、「インデックス」アクションにリダイレクトします。ユーザーログインは正常に機能しました。問題ありません、すべてが正しく見えました。

ただし、ステージングサーバー(Debian GNU / Linux 6.0.6カーネル3.2.6、Apache / 2.2.22、PHP / 53.15)では、リダイレクトしようとしたコントローラーアクションにより、(予期されたものではなく)HTTP200の空白ページが発生しました。 HTTP 302リダイレクト)。

ページは真に空白ではありませんでした。コントローラーの1つでPHPタグを開く前に、誤って追加されたことが最終的にわかった1つの改行がありました。私が理解しているように、改行は基本的にヘッダー出力の終了をトリガーしたため、Location: ...ヘッダーを書き込むことができませんでした。

誤った改行が見つかったら、それは簡単な修正でしたが、Macまたは同僚のWindowsマシンのどちらでも同じ空白ページの動作が見られなかったのはなぜだろうか。これがPHPバージョンとApacheバージョンの間の癖なのか、それとも実際には何なのかはわかりません。なぜ物事が彼らのように振る舞ったのかについての誰かの理論に興味があります。

4

1 に答える 1

3

このスタック オーバーフローの質問に対する回答によると、「PHP で「ヘッダーは既に送信されました」エラーを修正する方法」:

しかし、それは他のサーバーで動作しました!?

以前にヘッダーの警告が表示されなかった場合は、php.ini の設定が変更されています。その後、出力バッファリングは他のサーバーで有効になりましたが、現在のサーバーでは有効ではありませんでした。前のセクションを参照してください。

于 2013-03-12T17:33:26.923 に答える