codeigniter 4 必须通过 composer 创建项目,官网已下线 zip 包下载;推荐使用阿里云镜像执行 composer create-project;大文件下载需用原生流式输出避免内存溢出。

CodeIgniter 本身不提供“官方下载源项目包”供直接解压使用,所有稳定版本必须通过 Composer 创建项目。所谓“常用来源”,实际指两种可靠路径:一是 Composer 官方仓库(需配置国内镜像),二是 GitHub Release 页面(仅适合查看源码或手动调试,不推荐用于生产部署)。文件流式输出(尤其大文件下载)则需绕过框架内置的 force_download() 函数,改用原生 PHP 的分块读取机制。
Composer 是唯一推荐的下载方式
截至 2026 年 8 月,CodeIgniter 4 最新版为 v4.7.4。官网已下线 ZIP 包下载入口,手动复制 system/ 或解压 appstarter.zip 会导致自动加载失败、类找不到、路由不生效等问题。正确做法是:
- 确保 PHP ≥ 8.1、Composer ≥ 2.2,且启用 intl、mbstring、json 扩展
- 全局配置阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证配置生效:
composer config -g repo.packagist输出必须为{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 执行创建命令:
composer create-project codeigniter4/appstarter myproject --prefer-dist --no-interaction
GitHub Release 仅作参考,不可直接运行
GitHub 上的 codeigniter4/framework 和 appstarter 发布页提供源码压缩包(如 codeigniter4-framework-4.7.4.zip),但这些是纯代码快照:
- 不含
vendor/目录,无法直接 require autoload - 没有自动安装依赖,
composer install仍需联网拉取,若镜像未配置会超时 - 适合用于代码审计、比对变更、或离线环境临时查阅,不建议作为项目起点
大文件下载必须用流式输出
CI 自带的 force_download($filename, $data) 会把整个文件载入内存,超过 PHP 内存限制(如 128M)就报错。正确做法是绕过 helper,直接用原生流控:
- 设置响应头:
header('Content-Type: application/octet-stream');header('Content-Disposition: attachment; filename="' . basename($filepath) . '");header('Content-Length: ' . filesize($filepath)); - 关闭输出缓冲:
ob_end_clean(); - 分块读取并输出:
$fp = fopen($filepath, 'rb'); while (!feof($fp)) { echo fread($fp, 8192); flush(); }
(每次读 8KB,避免内存堆积) - 最后关闭句柄:
fclose($fp); exit;
可复用的流下载封装建议
若需在多个控制器中复用,可在 app/Helpers/Download_helper.php 中定义:
- 函数签名:
function stream_download(string $filepath, ?string $asName = null): void - 先校验文件存在且可读:
if (!is_file($filepath) || !is_readable($filepath)) show_404(); - 自动推导 MIME 类型(可选):
finfo_open(FILEINFO_MIME_TYPE)比扩展名更可靠 - 支持断点续传头(如需支持大文件浏览器下载):
header('Accept-Ranges: bytes');











