yii2-basic安装核心是web服务器根目录必须指向basic/web/,否则403或空白页;需配置cookievalidationkey、关闭csrf验证(开发期)、确认pdo扩展启用、设置runtime和web/assets写权限。

直接装 yii2-basic 模板,别碰 yii2-app-advanced —— 新手掉进权限、环境隔离、多入口的坑里出不来。
用 composer create-project 装对基础模板
很多人卡在第一步:执行 composer create-project --prefer-dist yiisoft/yii2-app-basic basic 后访问 403 或空白页。核心问题不是 Yii,是 Web 服务器没指向 basic/web/ 目录。
- Apache 必须把 DocumentRoot 设为
basic/web,不是项目根目录 - Nginx 配置中
root要写成path/to/basic/web,且必须加index.php到index指令里 - Windows 下用 XAMPP/MAMP 的,直接把
basic/web复制进htdocs会出错 —— 路径硬编码崩掉,老老实实配虚拟主机
跑通第一个控制器动作前先关掉 CSRF 验证
刚写完 SiteController::actionTest() 返回字符串,一刷新就报 400 Bad Request: Unable to verify your data submission. —— 这不是你代码错,是 Yii2 默认开启 enableCsrfValidation,而 GET 请求没带 token。
- 开发阶段,在控制器顶部加
public $enableCsrfValidation = false;立刻解决 - 别改全局配置(
config/web.php里的request组件),否则后续表单提交永远 400 - 真正需要 CSRF 时(比如 POST 表单),用
Html::csrfMetaTags()+Yii::$app->request->csrfParam手动传参,比盲目关全局安全得多
数据库连不上?先查 db 组件配置和 PDO 扩展
执行 php yii migrate 报 Class 'PDO' not found 或 SQLSTATE[HY000] [1045] Access denied,90% 是环境层问题,不是 Yii 配置写错。
- 运行
php -m | grep pdo,确认pdo_mysql(或对应驱动)已启用;MAMP/XAMPP 用户常忽略这个 -
config/db.php中的'dsn' => 'mysql:host=localhost;dbname=testdb',host 别写127.0.0.1—— macOS 或某些 Docker 场景下,localhost走 socket,127.0.0.1走 TCP,权限可能不一致 - 密码含特殊字符(如
@、/)必须用urlencode()处理再填进 DSN,否则解析失败静默报错
新手最易低估的是路径和权限耦合:Web 服务器用户(如 www-data)得有 runtime/ 和 web/assets/ 的写权限,chmod 775 runtime web/assets 不够,还得 chown -R www-data:www-data runtime web/assets —— 少这步,日志写不进、资源无法发布,错误全被吞掉。











