CodeIgniter 4 必须通过 Composer 安装依赖且依赖 composer.json 文件;PHP 版本需 ≥8.1、启用 intl 和 mbstring 扩展;vendor/autoload.php 路径须与 FCPATH 匹配,否则类无法加载。

CodeIgniter 4 必须用 Composer 安装依赖,官方不再提供完整打包版;CI3 虽可手动下载,但只要用到 monolog、phpunit 或第三方库(比如 codeigniter4/shield),就绕不开 Composer。
Composer 初始化失败:找不到 composer.json 或报错 “No composer.json found”
CI4 项目根目录下必须有 composer.json,它不是可选配置——这是整个依赖管理的起点。如果你是手动创建项目或从 Git 克隆未带该文件,Composer 就会拒绝操作。
- 新建 CI4 项目请直接运行:
composer create-project codeigniter4/appstarter myapp,别用git clone后自己补文件 - 已有项目缺失
composer.json?别手写,用composer init交互生成,再手动把"require": {"codeigniter4/framework": "^4.5"}补进 require 段 - CI3 项目若想接入 Composer,需在应用根目录(不是
system/下)放composer.json,并确保vendor/autoload.php在index.php中被正确引入
composer install 报错 “Your requirements could not be resolved”
这通常是因为 PHP 版本、扩展或已存在依赖冲突。CI4.5+ 要求 PHP 8.1+,而很多旧服务器默认是 7.4;同时 ext-intl 和 ext-mbstring 是硬依赖,缺一不可。
- 先检查:
php -v和php -m | grep -E "intl|mbstring" - CI4 的
codeigniter4/framework版本和 PHP 版本强绑定,比如^4.4支持 PHP 7.4–8.2,但^4.5已弃用 7.4,强行指定会触发解析失败 - 不要在
require里混用不兼容的包,例如同时 requirecodeigniter4/shield和老版本codeigniter4/framework,Shield 仅适配 CI4.4+,低版本会直接 break
安装后 vendor/autoload.php 不生效,报 “Class not found”
自动加载失效不是 Composer 没跑完,而是入口没接对。CI4 默认通过 public/index.php 加载 vendor/autoload.php,但路径写死为 ../vendor/autoload.php —— 如果你把项目放在子目录或改了结构,这个相对路径就会断掉。
- 确认
public/index.php第 14 行左右是否为:require FCPATH . '../vendor/autoload.php';;FCPATH 是public/目录绝对路径,所以../vendor必须真实存在 - 常见错误:把整个 CI4 项目放进 Apache 的
htdocs/myapp/,却用http://localhost/myapp访问,此时FCPATH指向htdocs/myapp/public/,../vendor才能命中;如果误放到htdocs/myapp/public/下,路径就错了 - CI3 用户注意:
application/config/config.php中的$config['composer_autoload']设为TRUE或指定路径字符串(如'vendor/autoload.php'),否则即使装了也不加载
最常被忽略的是 PHP 版本与框架小版本的隐式绑定,以及 vendor/autoload.php 路径是否真能被 FCPATH 正确解析——这两点不出问题,其他依赖基本不会卡住。










