Yii 3.0 是基于 PHP 8.2+ 彻底重写的现代框架,强制 PSR-11 容器、显式构造注入、PSR-15 中间件,弃用 Yii::$app 全局访问;PHP 版本低于 8.2 或未配置 DI 容器将导致 Fatal error 并无法启动。

要在2026年稳定运行一个现代PHP Web应用,必须明确Yii 3.0不是Yii 2.x的补丁升级,而是基于PHP 8.2+彻底重写的框架——它强制依赖PSR-11容器、显式构造注入、PSR-15中间件栈,且不再支持Yii::$app全局访问。不满足PHP 8.2或未配置DI容器,项目根本无法启动。
确认PHP与Composer环境
执行php -v,输出必须为PHP 8.2.0或更高(如8.3.12、8.4.5),低于8.2会直接报Fatal error: Uncaught Error: Call to undefined function yii\di\is_callable()并中断安装。【PHP 8.2是硬性门槛,不是建议】
运行composer --version,确保是Composer 2.5+;若版本过低,执行composer self-update升级。
检查必需扩展是否启用:PDO、OpenSSL、JSON、mbstring、ctype、xml,缺一不可。Linux下用php -m | grep -E "pdo|openssl|json"快速验证;Windows需打开php.ini手动确认extension=openssl等行未被注释。
创建Yii 3.0项目
在终端中进入你的Web根目录(如/var/www/html或C:\xampp\htdocs),执行:
composer create-project yiisoft/app myapp --prefer-dist
这会拉取yiisoft/app模板及所有依赖(包括yiisoft/yii-web、yiisoft/di等130+个官方包),耗时约1–3分钟,总大小约70MB。
⚠️ 注意:若执行后报错Could not find package yiisoft/app,说明Composer未配置国内镜像源,立即运行composer config -g repo.packagist composer https://packagist.proxy.fly.dev再重试。
验证安装结果
进入项目目录:cd myapp
启动PHP内置服务器:php -S localhost:8080 -t public/
浏览器访问http://localhost:8080,看到绿色“Welcome to Yii3!”页面,且页面底部显示PHP Version: 8.x.x和Environment: dev,即表示安装成功。
此时项目结构已扁平化:没有protected/或components/目录,核心配置集中在config/下,入口文件为public/index.php,控制器位于src/Controller/。
关键架构差异速查
方法一:放弃Yii::$app
Yii 3.0中Yii::$app->db、Yii::$app->user全部失效——组件必须通过构造函数注入或容器获取。例如控制器必须写成final class SiteController { public function __construct(private DbConnection $db) {} }。
方法二:路由必须显式声明
actionIndex()不再自动映射到/index。要么在config/routes.php中写Route::get('/', [SiteController::class, 'index']),要么在控制器方法上加属性#[Route('GET /')]。
方法三:调试工具栏需手动启用
默认不加载Debug Toolbar。要启用,先安装扩展:composer require yiisoft/yii-debug,再在config/web.php的middleware数组中插入new \Yiisoft\Yii\Debug\Middleware\DebugToolbarMiddleware(),并确保allowedIPs包含你的开发机IP。











