【问题标题】:Laravel 3 - POST Content-Length ExceptionLaravel 3 - POST 内容长度异常
【发布时间】:2013-05-21 05:33:02
【问题描述】:

运行 Laravel 3。

我正在尝试使用 laravel 框架上传文件。如果文件大于upload_max_filesize 的 php 设置,则会引发以下异常。

我已经在我的控制器和路由中尝试过,但没有成功(if 语句运行 - 它设置了一个会话 - 但仍然抛出异常并显示错误页面)

if ($_SERVER['CONTENT_LENGTH'] > 8380000) {
    //do stuff here because its too big
    // set a session and exit()
}

如何在不增加 php 内存限制的情况下防止引发此异常?

错误:

Unhandled Exception

Message:

POST Content-Length of 9306598 bytes exceeds the limit of 8388608 bytes
Location:

Unknown on line 0

作为旁注,这个问题在 laravel 论坛中至少被问过两次,除了“增加你的 php 内存限制”之外没有给出好的答案。

编辑:问题似乎是 laravel 正在加载所有 _POST 输入,然后我什至可以在路由或控制器中检查它们。对我来说似乎是一个错误。

【问题讨论】:

    标签: php exception-handling laravel laravel-3


    【解决方案1】:

    这看起来像 PHP 的 max post size,在许多系统上默认为 8M(大约 8388608 字节)。在 Laravel 中你无法解决这个问题,因为它是在 PHP 级别处理/管理/配置的。阅读Increasing the maximum post size 了解如何更改。

    【讨论】:

    • 是的,我知道它是 php max_post_size。所以除了提高限制之外没有其他办法吗?
    • 我在网上看到的唯一其他解决方案是基于 Flash 的插件,它们将上传内容分块,然后在服务器上再次将这些块连接在一起。看看plupload.com,如果你想这样做
    【解决方案2】:

    PHP 提出了这个警告,Laravel 威胁说这是一个致命错误。 这是在Error::shutdown 中完成的,任何抛出的 PHP 错误都将导致应用程序因该错误而关闭。

    我发现的一个解决方案是过滤哪些错误类型允许以 Error::shutdown 结尾。
    缺点是:

    • 需要修改 laravel 文件:laravel/laravel.php,如果您打算用新版本更新 laravel,这不是一个好主意(现在 4.1 版本几乎不会发生这种情况)。
    • 无法完全测试这是否意味着通过不中止警告错误对 laravel 行为产生一些副作用。

    这是我在文件laravel/laravel.php第46行所做的修改:

    register_shutdown_function(function()
    {
        require_once path('sys').'error'.EXT;
        $error = error_get_last();
    
        if ( $error!==null )
        {
            if( $error['type']!=E_WARNING )
            {
                Error::shutdown();
            }
         }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      相关资源
      最近更新 更多