composer create-project是唯一能启动yii2应用的正确起点,因yiisoft/yii2仅为类库,需yii2-app-basic等模板提供完整骨架(如web/index.php、config/web.php),跳过此步直接require将导致项目无法运行。

composer create-project 是唯一能跑起来的起点
跳过这步直接 composer require yiisoft/yii2,项目根本启动不了——没有 web/index.php、没有 config/web.php、php yii serve 命令也不存在。Yii2 的“应用”和“框架内核”是严格分离的:yiisoft/yii2 只是类库,而 yiisoft/yii2-app-basic 这类模板才提供完整骨架。
正确命令示例:
composer create-project --prefer-dist yiisoft/yii2-app-basic myapp
常见踩坑点:
-
Could not find package yiisoft/yii2-app-basic:多半是用了过时镜像(如已停用的 phpcomposer.com),应改用阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 执行后
vendor/空空如也:不是 Composer 失败,而是卡在下载子包(如yiisoft/yii2的 zipball),国内建议提前配好镜像 - PHP 版本不匹配:Yii2.0.x 最高只支持 PHP 7.4;若用 PHP 8.0+,
create-project会卡在mbstring检测或ReflectionParameter::getClass()弃用警告上
require 和 require-dev 必须分清,否则上线就出事
生产环境只读 require,require-dev 里的包默认不会装进去。把 yiisoft/yii2-debug 错放进 require,它就会在生产环境偷偷加载全部调试逻辑,拖慢响应还可能暴露敏感路径。
CI/CD 流水线通常执行 composer install --no-dev,此时 require-dev 内容完全不可见。
检查方式:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 列出所有开发依赖:
composer show --dev - 确认某个包是否在生产依赖中:
composer show | grep yii2-debug(无输出即不在require) - 装调试扩展必须加
--dev:composer require --dev yiisoft/yii2-debug
扩展装上了,Class not found?那不是 Composer 的锅
composer require yiisoft/yii2-gii 成功,不代表你能访问 /index.php?r=gii。Composer 只负责把类文件放进 vendor/ 并更新 autoload.php;能否被 Yii 实例化,取决于配置里有没有注册模块。
典型修复步骤:
- 在
config/web.php的modules数组里加上:'gii' => ['class' => 'yii\gii\Module'] - 如果想免路由访问,还得加进
bootstrap数组:'gii' - 确保入口文件第一行是:
require __DIR__ . '/../vendor/autoload.php';(注意../,高级模板里web/是子目录,少一个点就全崩)
路径错误可快速验证:ls ../vendor/autoload.php 在 web/ 目录下执行,应能列出文件。
composer install 失败,先别怪网络
报错如 Failed to download yiisoft/yii2 或 Your requirements could not be resolved,90% 不是网络问题,而是本地环境与锁文件不兼容。
高频原因:
-
composer.lock由高版本 Composer(如 2.5+)生成,但你本地是 Composer 1.x —— 它根本解析不了新格式,必须升级本地 Composer - PHP 版本或扩展缺失:比如
Class 'PDO' not found是pdo扩展没启用,mbstring extension is not loaded是mbstring没开,这些和 Composer 无关 - 运行
php -m | grep -E "pdo|mbstring|openssl"快速确认关键扩展是否就位
真正容易被忽略的一点:删了 vendor/ 后只运行 composer install 是不够的;如果原项目用的是 --no-install 初始化,你还得补上 composer install --no-dev,否则 autoload_classmap.php 就是空的,类照样找不到。










