Laravel错误:ob_end_flush():无法发送zlib输出压缩(0)的缓冲区

4
每当我遇到错误,例如:尝试访问非对象的属性时,我会收到以下消息:

ob_end_flush():无法发送zlib输出压缩缓冲区(0)

打开:/home/admin/domains/mysite/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Response.php

$previous = null;
$obStatus = ob_get_status(1);
while (($level = ob_get_level()) > 0 && $level !== $previous) {
    $previous = $level;
    if ($obStatus[$level - 1]) {
        if (version_compare(PHP_VERSION, '5.4', '>=')) {
            if (isset($obStatus[$level - 1]['flags']) && ($obStatus[$level - 1]['flags'] & PHP_OUTPUT_HANDLER_REMOVABLE)) {
                ob_end_flush();
            }
        }
    }
}

我尝试在php.ini中进行设置:
zlib.output_compression = Off
zlib.output_handler =

但这并没有帮助到我。

我正在使用 Laravel 4.1

有人知道如何解决这个问题吗?


请发布导致错误的代码。 - The Alpha
你有进展吗?我也遇到了类似的问题。 - Ben Swinburne
1
在我的情况下,团队中的某个人在index.php中添加了一条语句,基本上是打开了输出压缩。我只是将其删除,问题就解决了。 - Glad To Help
5个回答

4
如果您在视图中使用@secction,则请在该部分下方使用@stop来停止该部分区域。

很好,但在我的情况下与此无关:请查看我在这里的评论 -https://dev59.com/b4Dba4cB1Zd3GeqPAB1S#fanlnYgBc1ULPQZFSkMU - Glad To Help
我只需要在 Blade 的末尾添加 @endsection,问题就解决了。 - Shaan

2

不确定这是否有帮助,但我遇到了同样的错误并想分享一下我是如何解决的。它是由于尝试设置通过部分调用传递的空变量引起的。要修复它,只需使用isset检查。

@isset($var)
  @section('header', $var)
@endisset

0
不确定这是否有助于任何人,我在使用laravel创建PDF时收到了此错误。解决方案是添加两个数据变量,这些变量在控制器中返回并传递给view-pdf.blade.php视图文件。

0

检查您的Blade文件是否缺少像@endsection这样的@end语句。


0

如果你正在使用 Laravel 的任意版本,那么这个错误在生产环境下很容易修复。我解决了这个问题,通过编辑 env 文件,确保你将 local 设置为 Production


APP_ENV=Production

这是对我有效的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接