CodeIgniter 4 的现代开发流程必须基于 Composer,唯一正确方式是 composer create-project codeigniter4/appstarter myproject 初始化完整项目;需复制 .env.example 为 .env 并配置 app.baseURL、CI_ENVIRONMENT 和数据库主机;Web 根目录必须为 public/,本地用 php spark serve 启动。

CodeIgniter 4 的现代开发流程,核心就是围绕 Composer 构建——它不只是装个包的工具,而是整个项目结构、自动加载、环境配置和命令行能力的基础。跳过 Composer 或用错方式(比如只 require framework),项目根本跑不起来。
必须用 create-project 初始化完整项目
CI4 不接受“下载 ZIP → 解压 → 改配置”这种老式做法。官方唯一支持、且能直接运行的方式是:
- 执行 composer create-project codeigniter4/appstarter myproject(myproject 是你的项目名)
- 该命令会一次性拉取 appstarter 模板、codeigniter4/framework 核心、全部开发依赖(如 vfsstream、phpunit)、生成 vendor/autoload.php、初始化 writable 目录权限,并写入 .env.example
- 别用 composer require codeigniter4/framework——那只会装一个库,没有入口文件、没有路由配置、没有 spark 命令,不是可运行项目
环境配置绕不开 .env 文件
CI4 默认不报错、不写日志、不加载自定义配置,除非你主动激活 .env:
- 先复制:cp .env.example .env
- 再编辑 .env,至少取消三行注释并填对值:
app.baseURL = 'http://localhost:8080'(必须与 spark serve 实际地址一致,否则 CSS/JS 404、CSRF 失效)
CI_ENVIRONMENT = development(开启错误显示、调试日志、路由调试)
database.default.hostname = 'localhost'(即使不用数据库也得填,否则 Logger 等服务初始化失败)
依赖管理:添加第三方包很简单
项目初始化后,所有扩展包都通过 Composer 统一管理:
- 在项目根目录下运行 composer require monolog/monolog 或 composer require league/flysystem-aws-s3-v3
- CI4 原生支持 PSR-4 自动加载,装完就能直接 new \Monolog\Logger(),无需额外配置
- 如果需要全局辅助函数或服务,可在 app/Config/Services.php 中注册,利用 DI 容器自动注入
部署时 Web 根目录必须是 public/
CI4 严格遵循前端控制器模式,安全和功能都依赖正确路径:
- Apache 或 Nginx 的 DocumentRoot 必须指向 your-project/public/,不是项目根目录
- 否则 writable/ 目录会暴露、index.php 入口失效、.htaccess 规则不生效、路由全部 404
- 本地开发用 php spark serve 可跳过 Web 服务器配置,但上线前这一步不能省


















