PHP 8.5 下安装 Yii2 高级版或基础版关键在于“装完能否稳跑”,必须使用 ≥2.0.49 版本、正确设置 web/ 为根目录、启用 mbstring/openssl/fileinfo 扩展并禁用动态属性警告,高级版还需执行 init 和 migrate。

PHP 8.5 下安装 Yii2 高级版或基础版,关键不是“能不能装”,而是“装完能不能稳跑”。版本选错、入口配错、扩展缺位、迁移漏掉——任一环节出问题,都会导致白屏、500 错误或登录失败。下面按真实开发节奏,分四步讲清实操要点。
必须锁定 Yii2 ≥2.0.49 版本
低于 2.0.49 的版本(如 2.0.48)在 PHP 8.5 下大概率崩溃:Composer 安装可能成功,但运行时会因 UnionType 解析异常、ReflectionParameter 类型推断失败或动态属性拦截直接中断。2.0.49 是首个明确兼容 PHP 8.5 的稳定版,已修复 trait 属性读取、AST 变更适配、E_DEPRECATED 触发时机等底层问题。
- 基础版推荐命令:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic(自动拉取最新兼容版,通常为 2.0.49+) - 高级版推荐命令:
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced - 若需精确控制版本,可加约束:
composer create-project --prefer-dist yiisoft/yii2-app-basic:2.0.49 basic - 不建议用归档包(如 .zip)替代 Composer,除非网络受限;若用归档,务必选带 “with dependencies” 字样的完整包,并确认 vendor/ 非空
Web 服务器根目录必须指向 web/ 子目录
Yii2 不是传统 PHP 项目,不能把整个项目文件夹设为网站根目录。web/ 目录才是唯一合法入口,否则 autoload 失败、路由无法解析、静态资源 404。
- 基础版:站点根目录 =
/path/to/basic/web(只有一个入口) - 高级版:必须建两个独立站点
— 前台:根目录 =/path/to/advanced/frontend/web
— 后台:根目录 =/path/to/advanced/backend/web - 本地用 phpEnv:默认 www 路径是
C:\phpEnv\www,应将 basic/web 或 frontend/web 移入该目录下,再配置对应虚拟主机 - Apache/Nginx 配置中,DocumentRoot 必须包含
/web,且需开启 rewrite 模块(支持 URL 美化)
PHP 扩展与运行时配置三件套
PHP 8.5 默认禁用部分扩展,且对错误报告更严格。仅靠 php -v 显示版本正确远远不够,必须验证 CLI 和 Web 环境双可用。
立即学习“PHP免费学习笔记(深入)”;
- 必须启用的扩展:
mbstring(多字节处理)、openssl(Cookie 加密、HTTPS 请求)、fileinfo(上传校验、AssetBundle 检测) - 禁用动态属性警告:在
web/index.php开头添加ini_set('error_reporting', E_ALL & ~E_DEPRECATED);;更稳妥做法是在php.ini中设zend.assertions = -1并确保无__get()/__set()魔法逻辑 - 移除过时配置:删除
ini_set('memory_limit', '1G')类写法,改用php.ini全局设置;确认mbstring.func_overload未启用(PHP 8.5 已移除该指令) - 验证方式:
php -m | grep -E "mbstring|openssl|fileinfo"(CLI),再访问/requirements/index.php页面看 Web 环境红绿灯
高级版专属:init + 数据库迁移两步不可跳
高级版不是装完就能用,必须执行初始化并完成数据库迁移,否则 common/config/main-local.php 缺失、user 表未建、登录页直接报 InvalidConfigException 或 404。
- 安装后首先进入项目根目录(含
init.bat或init文件),Windows 运行init.bat,Linux/macOS 运行./init;选择 “Development” 模式,生成本地配置文件 - 编辑
common/config/main-local.php,填入数据库连接参数:'dsn' => 'mysql:host=localhost;dbname=yii2advanced',charset 必须与建库时一致(推荐utf8mb4) - 在项目根目录执行迁移:
yii.bat migrate(Win)或./yii migrate(Mac/Linux);首次会创建user、migration等基础表 - 迁移成功后,前台访问
http://your-domain/frontend/web/,后台访问http://your-domain/backend/web/;默认账号 admin/admin000



















