Yii3和Yii2.0项目在宝塔面板页面空白,主因是入口路径错设、open_basedir限制触发或autoload失败;应将网站根目录设为/web、开启display_errors与E_ALL报错、精准配置open_basedir白名单、确保runtime/assets可写并检查PHP错误日志。

Yii3和Yii2.0项目部署到宝塔面板后页面空白,通常不是代码没加载就是PHP致命错误被静默吞掉,最常见的是入口文件路径错、open_basedir限制触发、或require/autoload失败导致白屏无报错。
确认是否真白屏还是HTTP 500但错误被隐藏
打开浏览器开发者工具(F12)→ Network 标签页 → 刷新页面 → 查看主文档响应状态码。如果是 500 或 502,说明服务端出错;如果是 200 但内容为空,大概率是 PHP fatal error 被 display_errors = Off 屏蔽了。
在宝塔「网站」→ 点击对应站点 → 「PHP版本设置」→ 找到「禁用函数」右侧的「配置文件」链接 → 搜索 display_errors,确认值为 On;再搜 error_reporting,设为 E_ALL。改完点「保存」并重启PHP服务。
【关键前提】必须确保 web/index.php 文件真实存在且可被PHP读取,否则Nginx直接返回空响应,连PHP解析都不会触发。
检查Web服务器根目录是否指向/web子目录
进入宝塔「网站」列表 → 点击你的站点 → 「网站目录」选项卡 → 确认「网站根目录」填写的是 /www/wwwroot/your-site/web(注意末尾的 /web),而不是项目根目录 /www/wwwroot/your-site。
如果填错,Yii2/Yii3 的 config/、vendor/、runtime/ 等目录会暴露在Web下,宝塔为安全起见默认启用 open_basedir,直接拦截 require() 调用,结果就是白屏+无日志。
改完立即点击右上角「重载配置」,不要只点保存。
排查 open_basedir 限制引发的白屏
方法一:临时关闭 open_basedir(仅用于排查)
在宝塔该站点的「PHP版本设置」→ 「配置文件」中,搜索 open_basedir,将其值清空或改为 none,保存并重启PHP。若此时页面恢复,说明是 open_basedir 过严导致。
方法二:精准放行必要路径
将以下路径拼成一行,替换原 open_basedir 值(注意用冒号分隔,Linux下路径区分大小写):/www/wwwroot/your-site/web:/www/wwwroot/your-site/runtime:/www/wwwroot/your-site/vendor:/tmp:/proc
其中 your-site 替换为你的真实目录名;/tmp 和 /proc 是PHP运行时必需的系统路径,漏掉会导致 session 或 proc_open 失败。
注意:Yii3 默认使用 src/ 作源码目录,但入口仍为 web/index.php,所以 /web 必须在 open_basedir 白名单内。
验证 runtime 和 assets 目录是否可写
第一步:SSH登录服务器,执行:ls -ld /www/wwwroot/your-site/runtime /www/wwwroot/your-site/assets
第二步:确认输出中包含 www:www 且权限含 w(如 drwxrwxr-x)。若属主是 root 或权限为 r-x,则 Yii 写日志、生成资源失败,部分场景会静默白屏。
第三步:修复权限(以 your-site 为例):chown -R www:www /www/wwwroot/your-site/runtime /www/wwwroot/your-site/assetschmod -R 755 /www/wwwroot/your-site/runtime /www/wwwroot/your-site/assets
这一步做完别忘了清空 runtime/cache/ 下所有文件,否则旧缓存可能干扰诊断。
查看PHP错误日志定位致命问题
① 在宝塔「网站」→ 站点设置 → 「日志」选项卡 → 点击「PHP错误日志」右侧的「查看」按钮。
② 拉到最底部,找最近的 Fatal error、Class 'yii\base\Application' not found、require(): Failed opening required 类记录。
③ 若日志为空,说明错误发生在PHP解析器加载前(如 .user.ini 语法错、PHP扩展缺失),此时要去看宝塔「PHP管理」→ 对应版本 → 「错误日志」路径,那个才是真正的PHP启动级日志。
常见致命原因:vendor/autoload.php 不存在(Composer没装)、PHP缺少 mbstring 或 openssl 扩展、Yii3 项目误用了 Yii2 的 bootstrap 流程。


















