如题,当使用redirect时,抛出空白页面,无任何错误提示。这个问题隐藏的比较深,使用百度也几乎搜不到什么有效的解决方案,因此撰写该文。
该问题可能是由某一个配置文件的首行出现空行导致。空白行导致header提前被发送。具体的过程在yii\web\Response
中:
/**
* Sends the response headers to the client
*/
protected function sendHeaders()
{
if (headers_sent()) {
return;
}
if ($this->_headers) {
$headers = $this->getHeaders();
foreach ($headers as $name => $values) {
$name = str_replace(' ', '-', ucwords(str_replace('-', ' ', $name)));
// set replace for first occurrence of header but false afterwards to allow multiple
$replace = true;
foreach ($values as $value) {
header("$name: $value", $replace);
$replace = false;
}
}
}
$statusCode = $this->getStatusCode();
header("HTTP/{$this->version} {$statusCode} {$this->statusText}");
$this->sendCookies();
}
该函数的
if (headers_sent()) {
return;
}
指的是如果header被发送就返回空白,即我们所看到的空白页面。需要具体定位是哪里导致的该错误,可直接将这一小段代码注释掉,然后运行程序,即可看到是哪一处导致。如何修改也显而易见了。Good Luck。