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

执行Cronjob时出现class CI_controller未找到错误,求解决方案

解决Cpanel Cronjob中CodeIgniter CI_Controller未找到的问题

看起来你遇到了CodeIgniter定时任务的常见问题——直接运行控制器文件时框架核心没被加载,导致CI_Controller找不到的错误。别担心,我来帮你一步步解决:

核心原因

CodeIgniter的控制器类依赖框架的核心引导文件(比如index.php)来加载CI_Controller等基础类,你直接执行Cronjob.php时,这些核心文件并没有被引入,所以会报类未找到的错误。

解决方案

1. 使用CodeIgniter入口文件调用控制器方法(推荐方式)

修改你的Cronjob命令,通过CodeIgniter的index.php入口文件来触发控制器的transactions方法,这是框架设计的标准调用方式:

php -q /home/domain/public_html/index.php Cronjob transactions

解释:

  • index.php是CodeIgniter的核心入口,会自动加载所有框架依赖和配置
  • Cronjob是你的控制器类名
  • transactions是你要执行的控制器方法名

2. 手动加载框架核心(不推荐,仅作备选)

如果因为特殊情况必须直接运行Cronjob.php,可以在文件顶部手动引入CodeIgniter的入口文件来加载核心类:

<?php
// 手动加载CodeIgniter核心引导文件
require_once '/home/domain/public_html/index.php';

class Cronjob extends CI_Controller {
    public function __construct(){
        parent::__construct();
    }

    public function transactions(){
        // 你的业务代码...
    }
}

⚠️ 注意:这种方式可能会引发依赖冲突或配置加载不全的问题,优先使用第一种方案。

3. 验证路径与权限

  • 确保Cronjob命令中的绝对路径完全正确,替换domain为你的实际域名/主机目录名
  • 确认Cpanel的Cronjob执行用户拥有访问index.php、框架核心文件及数据库的权限

4. 手动测试命令

先通过SSH登录服务器,手动执行修改后的Cronjob命令,查看是否有其他错误(比如数据库连接失败),这样能更快定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:03:58