yii1.1需手动部署且禁用composer,yii2.0必须用composer安装并配置国内镜像与php扩展,yii3为全新架构需按psr标准分步构建;三者版本不兼容,选型取决于项目生命周期。

装 Yii 不是“下个包解压就完事”,版本不同,安装逻辑、依赖要求、配置重点全都不一样。踩坑往往不是代码写错了,而是环境没对、路径设错了、权限漏了、或者用老方法硬套新版本。下面按版本拆开说清楚,全是实操中高频翻车点。
Yii1.1:老项目维护别碰 Composer
Yii1.1 没走 Composer 生态,强行用 Composer 装反而容易混乱。它靠手动部署+配置驱动,核心就三点:
-
入口文件必须指向 protected/ 目录外:index.php 里 require 的是
yii.php,且$config路径要写绝对路径(比如dirname(__FILE__).'/protected/config/main.php'),相对路径在某些服务器上会失效 -
cookieValidationKey 必须手填:
protected/config/main.php里这个字段不能为空,否则登录、表单提交全报错;生成方式可用md5(uniqid(rand(), true))临时凑一个,但上线前得换正式密钥 -
Web 服务器根目录不能是项目根目录:Apache/Nginx 必须把 DocumentRoot 指向
/path/to/your/app(即 index.php 所在目录),而不是/path/to/your/app/protected——否则直接暴露 config 和 runtime,严重安全风险
Yii2.0:Composer 是唯一正途,但镜像和插件不能省
Yii2.0 依赖 Composer 管理整个生命周期,跳过它等于自断双臂。最容易卡住的不是命令输错,而是环境准备缺一环:
-
PHP 版本和扩展必须提前验明正身:最低 PHP 5.6,但实际推荐 7.4–8.2;
openssl、mbstring、pdo_mysql、curl、json、xml六个扩展缺一不可,php -m查完还得重启 PHP 进程才生效 -
composer asset 插件已废弃,别再装:旧教程里常提
fxp/composer-asset-plugin,它在 Composer 2.0+ 已彻底淘汰;现在前端资源(如 Bootstrap)直接由yiisoft/yii2-app-basic模板自带或通过 npm/yarn 管理,删掉旧插件再composer self-update -
宝塔或 Nginx 用户务必设对 web 目录:站点根目录必须是
/your-project/web,不是项目根目录;否则require '.../requirements.php'报 500 就是因为index.php错误加载了上层路径的文件 -
伪静态规则别乱抄 Apache 的 .htaccess:Nginx 用
try_files $uri $uri/ /index.php?$args;即可,加if判断或照搬 Apache 规则会导致 404 或重定向循环
Yii3:全新架构,别拿 Yii2 经验硬套
Yii3 不是 Yii2 的升级版,是重写的独立框架,依赖 PSR 标准、DI 容器和模块化组件。想用顺,就得放弃“一套配置走天下”的思维:
-
不提供开箱即用的应用模板:没有
yii2-app-basic那种一键项目;你要先composer create-project yiisoft/app(官方应用骨架),再按需composer require yiisoft/router yiisoft/view加组件,每加一个都得配 DI 容器 -
配置不再集中写在 web.php:路由、视图、日志等各自有独立配置文件(如
config/router.php),通过Configurator合并;params变成服务注入,不再全局\Yii::$app->params -
运行环境靠 PSR-17 HTTP 工厂驱动:入口不再是
index.php直接 run,而是用nyholm/psr7-server-request或slim/slim等兼容 PSR-7 的服务器适配器启动;本地开发常用php -S localhost:8000 public/index.php,但生产必须配 FastCGI 或 Swoole -
runtime 和 assets 不再自动创建:首次访问不会自建
runtime目录,得手动chmod -R 775 runtime assets并确认 Web 用户(如 www-data)有写权限,否则 blank page 无报错
版本之间不兼容,也没有平滑升级路径。选哪个,取决于项目生命周期:老系统维护用 Yii1.1,主力业务用 Yii2.0,新项目评估团队能力再决定是否上 Yii3。配置不是一次搞定的事,而是随着环境、部署方式、安全要求动态调整的过程。











