这是我几天前提出的问题的后续问题,并最终设法解决了自己。虽然我很高兴找到潜在的问题,但问题仅表现在一个(三个)环境中的事实似乎真的很奇怪。
该问题与在控制器 ( $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 版本之间的怪癖,或者真的是什么。我会对任何人关于事物为何如此行事的理论感兴趣。