composer 是 yii 的必需依赖管理工具,非插件;必须用 create-project 初始化项目,手动操作失效,因自动加载、版本约束和扩展生态均依赖 composer 机制。

Composer 不是 Yii 的插件,而是 PHP 项目的通用依赖管理工具;Yii 本身完全基于 Composer 构建,不通过它安装和更新,根本跑不起来。
为什么 composer create-project 是唯一靠谱的起步方式
手动下载 Yii 源码、复制 vendor、改 autoload —— 这些操作在现代 Yii(2.0.13+ / 3.x)中直接失效。因为核心类(如 yii\base\Application)的自动加载由 Composer 的 autoload.php 驱动,且版本约束、PSR-4 映射、dev-only 包(如 yiisoft/yii2-debug)全靠 composer.json 描述。
- 用
composer create-project --prefer-dist yiisoft/yii2-app-basic basic才能确保vendor/结构、autoload规则、require-dev分组全部就位 - 跳过这步直接 git clone 官方仓库?会缺
composer.lock,导致本地环境与 CI 不一致,composer install时可能拉到不兼容的小版本 - Yii 3 使用
yiisoft/app作为模板,命令变成composer create-project --prefer-dist yiisoft/app myapp,不是yii2-app-*系列
composer require 装扩展时,必须注意 Yii 版本对齐
Yii 2 和 Yii 3 的扩展生态不兼容。装错版本轻则类找不到,重则 composer update 报 Root composer.json requires yiisoft/yii2 ~2.0.0 -> found yiisoft/yii2[2.0.0, ..., 2.0.48] but it does not match your minimum-stability. 这类冲突。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Yii 2 扩展命名通常是
yiisoft/yii2-*(如yiisoft/yii2-bootstrap4),要求"minimum-stability": "stable"且"require": {"php": ">=7.4"}与项目匹配 - Yii 3 扩展统一为
yiisoft/*(如yiisoft/log,yiisoft/router),无yii2-前缀,且强制要求 PHP 8.0+ - 运行
composer require前先确认:当前项目composer.json中require下的yiisoft/yii2或yiisoft/app版本号,再查对应扩展的composer.json里require是否兼容
本地开发时 composer install 失败,优先检查 composer.lock 和平台配置
错误常表现为 Failed to download yiisoft/yii2. The "https://api.github.com/repos/yiisoft/yii2/zipball/..." file could not be downloaded 或 Your requirements could not be resolved to an installable set of packages. —— 这往往不是网络问题,而是锁文件或 PHP 配置不匹配。
-
composer install严格按composer.lock安装,如果该文件由高版本 Composer 生成(如 2.5+),而你本地是 Composer 1.x,会解析失败;用composer self-update升级即可 - PHP 版本不满足要求?检查
composer.json中"config": {"platform": {"php": "8.1.0"}}—— 这个配置会欺骗 Composer “假装”运行在 8.1,绕过真实环境检测,但实际执行时仍会报Fatal error: Uncaught TypeError - 删掉
vendor/和composer.lock再composer install?危险。应先git checkout composer.lock恢复团队共识版本,再composer update --lock微调
最易被忽略的是:Yii 应用启动时并不“主动调用” Composer,而是依赖其生成的 vendor/autoload.php。一旦这个文件缺失或路径不对(比如 Web 服务器 DocumentRoot 指向了 web/ 但 index.php 里 require __DIR__ . '/../vendor/autoload.php'; 路径错了),就会直接 500,连错误日志都不报 —— 因为 autoloader 没加载,error_log() 都找不到。










