问题:Yii2 direct 产生空白页面

如题,当使用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。

你可能感兴趣的:(问题:Yii2 direct 产生空白页面)