关键是要将Web服务器根目录设为backend/web,运行php init生成配置,启用urlManager美化URL,并确保runtime和assets目录可写。

要正确访问 Yii2 高级模板的 backend 入口,关键不是改代码逻辑,而是确保环境走通:入口路径对、自动加载通、Web 服务器指向准。多数“404”“Class 'Yii' not found”“跳转到 frontend”问题,都卡在这三步上。
必须先运行 php init
高级模板的 backend/web/index.php 不是放完就能用的——它依赖 init 脚本生成正确的软链接和环境配置。跳过这步,index.php 里 require 的 autoload.php 路径会失效。
- 进入项目根目录(如
/var/www/yii2-advanced) - 执行
php init,选 Development 模式 - 确认 backend/web/index.php 文件末尾是否为
(new yii\web\Application($config))->run();
Web 服务器根目录必须设为 backend/web
不能把 Apache 或 Nginx 的 DocumentRoot / root 设成项目根目录,否则 PHP 找不到 vendor/autoload.php,直接报错 Class 'Yii' not found。
- Apache:设置
DocumentRoot "/var/www/yii2-advanced/backend/web",并开启AllowOverride All支持 .htaccess - Nginx:在 server 块中写
root /var/www/yii2-advanced/backend/web;,并配好location ~ \.php$转发规则 - 本地开发建议绑定独立域名(如
backend.test),比用/backend/web子路径更稳定,避免重写冲突
检查 urlManager 和入口文件配置
美化 URL 默认关闭,会导致地址带 index.php?r=site/login 并可能卡住;同时要确认 backend 的入口没被误改成 console 应用。
- 打开
backend/config/main.php,确认 urlManager 包含:'enablePrettyUrl' => true,'showScriptName' => false, - 检查
backend/web/index.php第13行左右,必须是new yii\web\Application($config),不是 console\Application - 确保
backend/web/.htaccess(Apache)或 Nginx 的try_files规则存在且生效,例如:try_files $uri $uri/ /index.php?$args;
验证 runtime 和权限是否就绪
即使路径和配置全对,如果目录不可写,也会导致白屏或 500 错误,尤其影响登录页和 asset 发布。
- 确保
backend/runtime和backend/web/assets目录可被 Web 服务器用户(如 www-data)写入 - 测试访问
http://backend.test/index.php,应显示登录页;若报 403,检查 index.php 权限及上级目录读取权限 - 若提示
require(): Failed opening required '../vendor/autoload.php',说明当前工作目录不是 backend/web,根目录一定设错了


















