Laravel在上传大文件时收到错误

时间:2017-09-04 19:44:23

标签: php laravel laravel-5 php-5.6

我正在尝试在我的网站上传软件安装文件(.exe)。当我尝试上传5 mb或10 mb的文件时,我没有收到任何错误。但是在尝试上传大文件时,大小45 / 50mb,我收到此错误

(1/1) FatalThrowableError

Call to a member function getClientOriginalExtension() on null

我已经改变了我的php.ini:

upload_max_filesize = 900M

这是我的文件上传表单

<form action="/upload" method="post" enctype="multipart/form-data">
    {{ csrf_field() }}
    Product name:
    <br />
    <input type="text" name="name" />
    <br /><br />
    Files :
    <br />
    <input type="file" name="pdf" multiple />
    <br /><br />
    <input type="submit" value="Upload" />
</form>

这是我的控制器:

public function google(Request $request){

            $file = $request->file('pdf');
            $destinationPath = 'uploads';
            $file->move($destinationPath,$file->getClientOriginalName());

}

更新

我增加post_max_size大于upload_max_filesize。但现在收到此错误

(1/1) FatalErrorException
Allowed memory size of 134217728 bytes exhausted (tried to allocate 62973720 bytes)
in MediaFileUpload.php (line 246)

2 个答案:

答案 0 :(得分:1)

默认php.ini memory_limit是128 MB。你应该:

  • 优化代码以使用正常数据量
  • 将php.ini中的 memory_limit 更改为更高的值,我没有 建议一下 - 用你的方法你会碰到这一堵墙 再次

您应该参考此answer。我建议您监控应用程序,看看是否存在潜在的内存泄漏并优化代码。

标准文件上传需要记住的一个关键事项是服务器需要处理文件,提示它占用大量内存的原因。

希望这可以帮助您走上正确的道路。

答案 1 :(得分:1)

在php.ini中增加'memory_limit'