You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP上传大文件触发Call to a member function getSize() on null错误求助

问题原因与解决方案

Call to a member function getSize() on null 报错的核心是执行$file = $this->request->getFile('imagefile')时没有获取到有效文件对象,大文件上传触发了服务端的上传大小限制,导致文件没有被正常接收,所以$file为null,调用方法直接报错。

第一步:修复代码健壮性

先补充文件对象存在性校验,避免空调用报错,修正后的代码如下:

$title = $this->request->getPost('title');
$kategori = $this->request->getPost('kategori');
$seo = str_replace(" ", "-", strtolower($kategori));
$deskripsi = $this->request->getPost('deskripsi');
// 先初始化基础数据
$data = [
    'title'     => $title,
    'kategori'  => $kategori,
    'seo'       => $seo,
    'deskripsi' => $deskripsi
];
$file = $this->request->getFile('imagefile');
// 先判断文件对象存在、上传合法再处理
if ($file && $file->isValid() && $file->getSize() > 0) {
    $image = $file->getRandomName();
    $file->move('./uploads/peta/', $image);
    $data['file'] = $image;
}

第二步:调整服务端上传限制

小文件上传正常、大文件报错基本都是服务端参数限制导致,需要同步调整以下配置:

  • PHP配置修改

    找到php.ini配置文件,调整对应参数(示例为最大支持100M文件上传,可按需修改数值):
    • upload_max_filesize = 100M:单个文件最大上传大小
    • post_max_size = 120M:POST请求总大小,需要大于upload_max_filesize,预留其他表单字段的大小空间
    • max_execution_time = 300:脚本最大执行时间,大文件上传需要更长的执行时长
    • max_input_time = 300:请求接收数据的最大时长
      修改完成后重启PHP服务生效。
  • Web服务器配置修改

    • 若使用Nginx:在nginx配置对应的http块、server块或站点location块中添加参数client_max_body_size 120M;,修改后重启Nginx生效。
    • 若使用Apache:在httpd.conf或站点.htaccess文件中添加参数LimitRequestBody 125829120(单位为字节,120M对应数值为12010241024=125829120),修改后重启Apache生效。

如果使用的框架有单独的上传大小限制配置,也需要同步调整对应参数。

内容的提问来源于stack exchange,提问作者Handikater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:36:04