Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Laravel 5中通过干预图像上传大尺寸图像_Laravel_Laravel 5_Intervention - Fatal编程技术网

如何在Laravel 5中通过干预图像上传大尺寸图像

如何在Laravel 5中通过干预图像上传大尺寸图像,laravel,laravel-5,intervention,Laravel,Laravel 5,Intervention,我正在我的项目中使用 我的应用程序在上传小尺寸图像时运行平稳。但当我尝试上传大尺寸图像(>2mb)时,我的应用程序停止工作 即使它没有显示出正确的错误。有时它显示令牌不匹配错误&有时url不重定向 如何修复它?我不知道 这是我的密码: $post->new Post(); if($request->hasFile('image')){ $image=$request->file('image'); $filename=Auth::user()->id.'

我正在我的项目中使用

我的应用程序在上传小尺寸图像时运行平稳。但当我尝试上传大尺寸图像(>2mb)时,我的应用程序停止工作

即使它没有显示出正确的错误。有时它显示
令牌不匹配
错误&有时url不重定向

如何修复它?我不知道

这是我的密码:

$post->new Post();

if($request->hasFile('image')){
    $image=$request->file('image');
    $filename=Auth::user()->id.'_'.time().'.'.$image->getClientOriginalExtension();
    $location=public_path('images/'.$filename);
    Image::make($image)->save($location);

    $post->image=$filename;
}

$post->save();
我正在使用
图像干预
上传图像。但你也可以建议它的替代方案


谢谢

实际上,这是服务器端在
php.ini
文件中设置变量值的问题。如果上传的内容超过服务器的post_max_size设置,则输入将为空,您将得到令牌不匹配错误


根据需要更改
upload\u max\u filesize
post\u max\u size
值,然后重新启动服务器。

结果表明这是内存问题。如果您查看错误日志,您会发现服务器内存不足。你会看到类似的东西

PHP Fatal error:  Allowed memory size of XXXXXXXX bytes exhausted (tried to allocate XXXXX bytes) in ...
if( $request->hasFile('image') && $request->file('image')->getClientSize() < 2097152 ){
    $image=$request->file('image');
    $filename=Auth::user()->id.'_'.time().'.'.$image->getClientOriginalExtension();
    $location=public_path('images/'.$filename);
    Image::make($image)->save($location);

    $post->image=$filename;
}
由于干涉图像逐像素读取整个图像,并将数据保存在内存中,因此像2MB这样看似很小的图像最终可能需要几十MB的内存来处理

您可能需要将内存限制设置为可用的最高值,并在打开文件之前检查文件大小,因为一个站点如果没有错误消息就中断了,那将很尴尬。使用类似

PHP Fatal error:  Allowed memory size of XXXXXXXX bytes exhausted (tried to allocate XXXXX bytes) in ...
if( $request->hasFile('image') && $request->file('image')->getClientSize() < 2097152 ){
    $image=$request->file('image');
    $filename=Auth::user()->id.'_'.time().'.'.$image->getClientOriginalExtension();
    $location=public_path('images/'.$filename);
    Image::make($image)->save($location);

    $post->image=$filename;
}
if($request->hasFile('image')&&&$request->file('image')->getClientSize()<2097152){
$image=$request->file('image');
$filename=Auth::user()->id.''时间().$image->getClientOriginalExtension();
$location=public_路径('images/'。$filename);
图像::生成($Image)->保存($location);
$post->image=$filename;
}

我已经更改了
上传最大文件大小=100M
上传最大文件大小=20M
,并重新启动了服务器。在那之后,我尝试上传一张
jpeg
图像(4.04M)。现在它没有显示任何错误,但当我提交表单时,一个空白页面出现&毕竟图像没有上传。你能解释一下吗?希望你在调试打开时检查一下。也看看和。这可能会对您有所帮助。出现了这个确切的错误(大文件图像上载时令牌不匹配),并更改了答案中指出的两个ini设置。这成功地解决了问题。谢谢@AddWeb