应使用 composer create-project --prefer-dist yiisoft/yii2-app-basic myproject 2.0.48 安装受支持的最后一个稳定版,因 Yii2 2.0.x 系列已于 2023 年底进入 EOL,仅提供安全补丁。

直接用 composer create-project 就能装好 Yii2,但默认会拉取最新稳定版(通常是 2.0.48),而这个版本已停止维护;如果项目需要长期支持,得手动指定 LTS 版本或改用 Yii3——不过你问的是 Yii2,那就得先确认是否真要踩这个老版本的坑。
用 create-project 初始化 Yii2 项目时怎么选版本
不加参数默认装的是最近发布的非 RC 版本,但 Yii2 官方早在 2023 年底就宣布 2.0.x 系列进入 EOL(End of Life),只有安全补丁,不再修复 bug。所以别用 composer create-project --prefer-dist yiisoft/yii2-app-basic 这种裸命令。
- 要装受支持的最后一个稳定版(2.0.48),显式加上
@stable:composer create-project --prefer-dist yiisoft/yii2-app-basic myproject 2.0.48 - 如果服务器 PHP 版本是 8.0+,注意 2.0.48 对 PHP 8.1 的某些特性(如枚举、只读类)兼容性有限,实际运行中可能触发
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated类似警告 - 想跳过 Web 服务器配置阶段?加
--no-install先生成结构,再自己跑composer install控制依赖安装时机
composer.json 里哪些 Yii2 相关配置容易出问题
Yii2 的应用模板自带大量预设包(如 yiisoft/yii2-bootstrap4、yiisoft/yii2-debug),但它们的版本约束写法很松,比如 "~2.0.0",升级时可能意外拉入不兼容变更。
-
"require": { "yiisoft/yii2": "~2.0.48" }比"~2.0.0"更安全,锁死小版本号 - 调试工具
yii2-debug在生产环境必须禁用,否则暴露敏感信息;检查config/web.php是否只在YII_ENV_DEV下加载该模块 - 如果用了
yii2-gii,确保gii模块的allowedIPs配置没写成['*'],否则线上也能访问代码生成器
安装后跑不起来?常见报错和对应检查点
最常卡在 Document root must be set 或 Class 'Yii' not found,本质不是 Composer 没装好,而是 Web 服务器没指向对路径,或自动加载失效。
- Apache/Nginx 必须把
document_root设为web/子目录(不是项目根目录),否则index.php找不到vendor/autoload.php - 执行
php yii serve启动内置服务器时,若提示Could not open input file: yii,说明当前目录不是项目根目录,或者yii文件权限不对(需可执行) -
Class 'yii\web\Application' not found多半是vendor/autoload.php没被引入,检查web/index.php开头是否有require __DIR__ . '/../vendor/autoload.php';
Yii2 的 Composer 安装本身不难,难的是后续维护:它的扩展生态早已停滞,很多第三方包(比如 yii2-grid、yii2-datecontrol)最后一次更新都在 2021 年前,PHP 8.2 下大概率报错。真要上新项目,建议直接评估 Yii3 或 Laravel;如果只是维护旧系统,就老老实实锁死 2.0.48,别碰 composer update。










