问题: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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • yii处理http请求时,执行的流程是这样的: 1、服务器接收到来自客户端(比如浏览器)的请求,服务器(比如ngi...
    小羊羊爱吃饭阅读 740评论 0 0
  • Composer 基本用法 // 安装yii程序 composercreate-project--prefer-d...
    热过豆腐干阅读 1,273评论 0 4
  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 2,769评论 0 6
  • 老生常谈-从输入url到页面展示到底发生了什么2017-04-10 咸鱼老弟 Web开发来自:咸鱼老弟 - 博客园...
    __Seve阅读 1,037评论 0 4