上传的文件只有6M,PHP内存设置的是128M,但是却提示内存溢出
use Intervention\Image\ImageManagerStatic as Image;
$file = $request->file('file');
$image = Image::make($file);//这里内存溢出了
pid:12746 Worker[12746] process terminated with ERROR: E_ERROR "Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in /vendor/intervention/image/src/Intervention/Image/Gd/Decoder.php on line 154"
扩展154行代码如下
linux下的docker容器,php8.0版本,webman版本:1.5.6
phar打包或者二进制打包后的文件会很大,启动后会进程会占用较高内存,上传个文件内存就可能超限制了。
我这没打包的
app/controller/UploadController.php
我本地测试结果,没有什么问题
环境
老大,我试了还是不行的,上传了一个4M多的,内存占用将近50M,相比你的测试结果,内存占用很高
结果:
文件大小:4.64M
起始内存占用:9.97M
处理后内存占用:57.15M
memory_limit:128M
<?php
namespace app\api\controller;
use app\service\CommonService;
use DI\Attribute\Inject;
use Intervention\Image\ImageManagerStatic as Image;
use support\Request;
class CommonController
{
[Inject]
}
php版本?
Intervention\Image 版本?
用一个空的webman项目试下,排除自动注入问题。
版本信息:php:8.0,Intervention\Image:2.7.2
有测试结果了,用了一个空的webman测试的。
在容器中起的服务,上传文件时会占用比较高的内存,在主机上的服务上传则是正常的;
这个问题有解决的办法吗?