应使用 composer create-project 初始化 Yii2 项目,如 composer create-project --prefer-dist yiisoft/yii2-app-basic basic,避免手动 init 导致依赖、autoload 或插件配置错误;需确保 PHP ≥ 7.4、扩展齐全,清理 vendor 和 composer.lock 后重试,并配置国内镜像源加速安装。

直接用 composer create-project 初始化 Yii2 项目,别手动 composer init
Yii2 官方不推荐从空项目开始手配 composer.json,因为依赖关系、autoload 配置、脚手架目录结构都已固化。手动初始化容易漏掉 yiisoft/yii2-composer 插件或错误设置 "minimum-stability",导致后续 composer install 失败或 yii 命令不可用。
实操建议:
- 运行
composer create-project --prefer-dist yiisoft/yii2-app-basic basic(基础版)或yiisoft/yii2-app-advanced advanced(高级版) - 加
--stability=stable显式指定稳定版,避免因默认minimum-stability是dev导致拉取到不兼容的 dev 分支 - 路径名(如
basic)会自动生成对应目录,别写成绝对路径或带空格名称 - 首次运行后,
vendor/bin/yii就可直接执行,不用再跑init脚本(除非你选了高级版且需多环境配置)
安装失败常见报错:「require yisoft/yii2 ~2.0.43」不满足或「Class 'Yii' not found」
这通常不是 Composer 本身问题,而是 PHP 环境或锁文件残留导致的依赖解析冲突。Yii2 对 PHP 版本、扩展(如 mbstring、openssl)有硬性要求,且 composer.lock 若来自旧项目,可能锁定过期的子依赖。
实操建议:
- 确认 PHP 版本 ≥ 7.4(Yii2.0 最低要求),运行
php -v和php -m | grep -E 'mbstring|openssl|pdo|json' - 删掉已有
composer.lock和vendor/目录再重试,不要复用其他项目的 lock 文件 - 如果提示
require yisoft/yii2 ~2.0.43不满足,说明本地已装更高版本(如 2.0.45),但某子包声明了严格范围——此时加--ignore-platform-reqs仅作临时调试,生产环境应升级对应子包 -
Class 'Yii' not found多因vendor/autoload.php没被入口文件引入,检查web/index.php开头是否有require __DIR__ . '/../vendor/autoload.php';
composer global require 不适合装 Yii2,它只适合 CLI 工具
有人想全局装 yiisoft/yii2 方便到处用,这是误解。composer global 是给 phpunit、laravel/installer 这类命令行工具设计的,而 Yii2 是框架,必须按项目隔离安装——它的 autoload 规则、配置路径、Web 入口都绑定在项目根目录下。
实操建议:
- 绝对不要运行
composer global require yiisoft/yii2,它不会生成vendor/bin/yii,也不会配置自动加载 - 全局可装的是
fxp/composer-asset-plugin(旧版 Yii2 需要,但已弃用)或hirak/prestissimo(加速插件),这些才属于真正意义上的全局辅助工具 - 若需多个 Yii2 项目共享扩展(如自研组件),应发布为独立包并
composer require your-vendor/your-package,而非试图“共用 vendor”
国内网络下 composer install 卡在「Loading from cache」或超时
这不是 Yii2 特有问题,但新手常误以为是框架安装慢。本质是 Packagist.org 或 GitHub API 响应延迟,Composer 默认没开并发下载,且 asset 包(尤其是 bower-asset)走 GitHub Release,国内直连极不稳定。
实操建议:
- 换国内镜像源:
composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意:该镜像已停,改用https://mirrors.aliyun.com/composer/) - 禁用 asset 插件(Yii2.0.14+ 默认不再需要):确认
composer.json中没有"fxp/composer-asset-plugin",如有,先composer global remove fxp/composer-asset-plugin - 加
-vvv参数看卡在哪一步,常见是等github.com的 API rate limit,此时可临时设GITHUB_TOKEN环境变量提升限额 - 首次安装完后,下次用
composer install(而非update)能跳过依赖分析,快很多
php -m 输出或残留的 composer.lock,这才是最耗时间的地方。










