ci4.7.2环境可直接用composer create-project codeigniter4/appstarter myapp搭建,要求php≥8.0、composer≥2.5,需启用mbstring/xml扩展,.env须置于项目根目录,启动命令为php spark serve。

直接用 composer create-project 命令就能拉起一个可运行的 CI4.7.2 环境,不用手动解压、复制文件或改权限——前提是 Composer 已就位且 PHP 版本 ≥ 8.0。
确认 Composer 和 PHP 版本是否达标
CI4.7.2 要求 PHP ≥ 8.0(官方明确不兼容 7.x),而 Composer 必须是 2.5+(旧版可能因依赖解析失败卡在 codeigniter4/framework 的子包上)。
- 终端执行
php -v检查输出是否含8.0.或更高版本 - 运行
composer --version,确保显示2.5.开头;若低于此,用composer self-update升级 - 如果报错
ext-mbstring或ext-xml缺失,需在php.ini中启用对应扩展
用 create-project 初始化项目(不是 require)
很多人误用 composer require codeigniter4/framework,结果只装了核心库,缺路由、CLI 工具、public/index.php 入口和默认配置——这会导致 php spark serve 启动失败或 404。
- 正确命令是:
composer create-project codeigniter4/appstarter myapp -
appstarter是官方维护的完整脚手架,已预置app/、public/、spark命令和基础路由 - 不要加
--prefer-dist:CI4 的发布包含大量小文件,用压缩包反而容易校验失败;让 Composer 直接 clone git tag 更稳 - 初始化后进目录:
cd myapp,再跑php spark serve,浏览器打开http://localhost:8080就能看到欢迎页
.env 配置必须在 public/ 同级目录
CI4.7.2 默认从项目根目录加载 .env,但 Web 服务器只能访问 public/ 下内容。如果把 .env 错放进了 app/Config/ 或 public/ 里,$dotenv->load() 会静默失败,导致数据库配置、app.baseURL 全部回退默认值。
- 正确位置:
myapp/.env(和public/、app/并列) - 首次启动后自动生成的
.env是只读示例,需手动去掉#并填值,例如:app.baseURL = "http://localhost:8080/" - 若用 Apache,
baseURL必须显式设置,否则生成的 URL 会漏掉路径前缀(比如项目放在/myapp/下却生成/login而非/myapp/login)
spark serve 启动失败常见原因
报错 Class 'CodeIgniter\CLI\CommandRunner' not found 或直接空白响应,大概率是 autoloader 没生效,根源常在目录结构或命名空间错位。
- 检查
myapp/app/Controllers下控制器类是否以App\Controllers\开头,且文件名与类名严格一致(如Home.php→class Home extends BaseController) - 别手动修改
composer.json里的"autoload"段——appstarter已配好 PSR-4 映射,改错会导致spark命令找不到命令类 - Windows 用户注意路径分隔符:确保
APP_NAMESPACE在.env中设为App(不能写成app),大小写敏感
最易被忽略的一点:CI4.7.2 的 spark 命令依赖 php-cli,而某些 MAMP/XAMPP 环境中 php 命令指向的是 CGI 版本,会导致 spark 解析失败。用 which php 和 php -S 测试 CLI 可用性,必要时指定完整路径,比如 /usr/bin/php spark serve。











