codeigniter 本身没有 artisan 工具——artisan 是 laravel 专属命令行接口,php artisan 在 codeigniter 中会报错;ci4 使用 spark 替代,ci3 需通过 index.php 模拟 cli 请求并注意环境隔离与配置适配。

php artisan 在 CodeIgniter 项目中直接运行会报错:Command 'artisan' not found 或 Could not open input file: artisan。
如果你在 CodeIgniter 项目里看到 php artisan 相关操作,要么是误用了 Laravel 文档,要么项目已被手动混入 Laravel 组件(不推荐、易出错)。
下面说清楚 CodeIgniter 自己怎么跑命令行任务。
CodeIgniter 4 的原生 CLI 入口是 spark
CodeIgniter 4 内置了轻量级 CLI 工具 spark,替代了 Laravel 的 artisan。它位于项目根目录,可直接执行:
-
php spark list查看所有可用命令 -
php spark make:controller Posts生成控制器 -
php spark migrate运行数据库迁移 -
php spark serve启动开发服务器(类似php -S)
注意:spark 命令只在 CI4 中存在;CI3 没有等价内置 CLI 工具,需手动实现。
CodeIgniter 3 怎么跑命令行?靠 index.php + --env 和路由模拟
CI3 不提供官方 CLI 入口,但可通过 PHP 直接调用 index.php 并传参模拟请求:
- 基本格式:
php index.php controller_name method_name arg1 arg2 - 例如:
php index.php tools backup db(假设Tools控制器有backup()方法) - 必须确保 CLI 环境加载了正确的配置(如数据库、session),建议在
index.php开头加$_SERVER['argv']判断,或通过ENVIRONMENT切换到testing模式 - 不能依赖
$_GET或浏览器 Cookie,所有输入应通过$this->input->get()改为$this->input->get_post()或显式读取$argv
自定义 CLI 命令在 CI3 中容易踩的坑
手动写 CLI 脚本时,常见断裂点包括:
- URL 路由未生效:CLI 下
$this->router不自动解析路径,index.php后参数不会进routes.php,必须硬编码匹配控制器/方法 - Session 和 Cookie 不可用:CLI 进程无 HTTP 上下文,
$this->session默认失效,需禁用或改用文件/数据库驱动并手动启动 - Base URL 错乱:
base_url()和site_url()可能返回空或 http://localhost,应在 CLI 模式下重设config['base_url'] - 输出被缓冲干扰:CLI 命令应关闭输出缓冲(
ob_end_clean())、禁用 HTML 头(header()报错)、用echo或log_message()替代视图渲染
CI4 的 spark 命令无法扩展?其实可以注册自定义命令
CI4 允许你写自己的 spark 子命令,步骤简洁:
- 运行
php spark make:command SendNewsletter生成类文件(位于app/Commands/) - 编辑
signature属性,例如send:newsletter {--force : Force sending} - 在
handle()中写逻辑,可安全调用模型、服务、$this->db等 - 无需手动注册——CI4 自动扫描
app/Commands/下的类
注意:签名中花括号 {} 表示必需参数,方括号 [] 表示可选,--flag 是开关选项;参数值获取用 $this->argument('name') 或 $this->option('force')。
ENVIRONMENT 和 app/Config/ 下对应配置是否已为 CLI 场景适配。











