Laravel - 上传文件错误“PostTooLargeException”

时间:2017-07-19 17:31:17

标签: php laravel file-upload mamp

我有一个上传两个文件的表单。如果我上传小文件它运行良好,但如果我上传大文件给我这个警告:

  

警告:POST内容长度31996010字节超过了第0行的Unknown中的8388608字节限制

我已经阅读了一些文章,告诉我们更改php.in upload_max_filesizepost_max_size。我将两者都更改为200M并重新启动mamp。

如果我转到phpinfo文件,我看到两个参数都是200M,所以它改变了但警告是连续的,不会上传文件。

我上传的代码是:

$coverName = uniqid($catalogue->companyId.'_C'.$catalogue->ref.'_');
    $fileName = uniqid($catalogue->companyId.'_P'.$catalogue->ref.'_');
    $coverExtension = $request->file('cover')->getClientOriginalExtension();
    $pdfExtension = $request->file('pdf')->getClientOriginalExtension();
    $destination = '/storage/app/public/uploads';

    $request->file('cover')->move($destination, $coverName.".".$coverExtension);
    $request->file('pdf')->move($destination, $fileName.".".$pdfExtension);

.htaccess文件:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

我是否必须更改laravel中的某些定义?

谢谢

2 个答案:

答案 0 :(得分:1)

在php.ini中更改upload_max_filesize和post_max_size可以解决您的问题。

确保您正在更改正确的PHP文件 - 如果您运行php -i(这是在命令行环境中运行phpinfo()的方法),您将看到配置文件和加载配置文件。

确保使用已加载的配置文件,而不是另一个。

答案 1 :(得分:0)

从错误中可以清楚地看出,最大尺寸仍然设置为8M。如果你的值在php.ini中确实是正确的,请仔细检查它们是否在其他地方被覆盖。

你应该检查:

  • 的php.ini
  • 的.htaccess
  • 其他apache / nginx配置文件

如果找不到它的设置位置,可以在系统中搜索8M,它可能会找到设置该值的文件。

编辑:深入研究引发ValidatePostSizePostTooLargeException中间件并尝试进行一些调试可能会很有用。

  

我是否必须更改laravel中的某些定义?

不,您可以看到ValidatePostSize中间件将$request->server('CONTENT_LENGTH')ini_get('post_max_size')进行比较。