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

使用Codeigniter4上传文件报Call to a member function library() on null错误

错误原因排查与修复方案

核心错误原因

  • 你混淆了CodeIgniter 3和CodeIgniter 4的语法:$this->load->library()是CI3的类库加载方式,CI4已经完全移除了这套加载逻辑,因此$this->load本身就是null值,调用它的library()方法自然触发报错。
  • 你的自定义控制器构造方法没有调用父类的构造函数,CI4控制器的自定义构造方法必须优先执行parent::__construct(),否则框架核心初始化的属性都会缺失。

修复步骤

1. 修正控制器构造方法

先修改你的构造函数,补全父类构造调用:

public function __construct()
{
    // 必须先调用父类构造完成框架初始化
    parent::__construct();
    $this->panduan_model = new \App\Models\M_Panduan();
}

2. 替换为CI4标准的文件上传逻辑

CI4不需要提前加载上传类,直接从请求实例中获取上传文件处理即可,修改你的testing方法代码如下:

public function testing()
{
    $file_name = 'tes';
    // 上传路径注意和实际目录结构匹配,提前确保目录有服务器可写权限
    $upload_path = FCPATH.'/public/assets-menu/file/upload/panduan/';
    // 从请求中获取上传的文件
    $file = $this->request->getFile('file');
    // 验证文件是否上传成功、是否是合法PDF
    if ($file->isValid() && !$file->hasMoved() && $file->getClientMimeType() == 'application/pdf') {
        // 移动文件到指定目录,第三个参数设为true表示覆盖同名文件
        $file->move($upload_path, $file_name.'.pdf', true);
        print_r('ok');
        // 上传后的文件信息可以通过$file->getName()等方法获取
    } else {
        print_r('error');
        // 可以通过$file->getErrorString()获取具体错误信息用于排查
    }
}

补充说明

你当前的视图代码除了form标签闭合位置不规范(form在modal-body内开启,却在modal-footer外闭合),其余上传相关配置是正常的,不需要额外修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:03