【发布时间】:2013-03-12 17:10:54
【问题描述】:
这是one I asked a few days ago 的后续问题,最终我自己解决了。虽然我很高兴发现了根本问题,但问题只出现在一个(三个)环境中的事实似乎很奇怪。
该问题与在控制器 ($this->redirect(...);) 中重定向的 CakePHP 2.3.0 站点上的操作有关。
基本上,重定向在我的本地(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 kernel 3.2.6、Apache/2.2.22、PHP/5.3.15)上,任何尝试重定向的控制器操作都会导致 HTTP 200 空白页(而不是预期的 HTTP 302 重定向)。
页面并不是真正的空白,我最终发现在我的一个控制器的开始 PHP 标记之前错误地添加了一个换行符。据我了解,换行符本质上触发了标头输出的结束,因此无法写入 Location: ... 标头。
一旦发现错误的换行符,这是一个快速修复,但我想知道为什么我在我的 Mac 或我同事的 Windows 机器上没有看到相同的空白页行为。我不确定这是否是 PHP 或 Apache 版本之间的怪癖,或者真的是什么。我会对任何人关于事物为何如此行事的理论感兴趣。
【问题讨论】:
-
如何在机器之间移动文件?
-
我们有一个颠覆性回购
标签: php http cakephp redirect http-headers