yii2.0.55在宝塔运行不报500错误的关键是将站点根目录设为/web子目录,确保web/index.php可读、php≥7.4、runtime/assets权限为755、禁用.user.ini、配置nginx伪静态规则并启用必要php扩展。

Yii2.0.55项目在宝塔一键安装环境后,不能直接把整个项目目录设为站点根目录,否则会暴露config/、runtime/等敏感路径,导致500错误或安全风险。
确认并修正站点根目录
进入宝塔「网站」→ 找到对应站点 → 点击「设置」→「网站目录」选项卡;【将根目录从 /www/wwwroot/your-site 改为 /www/wwwroot/your-site/web】;点击「保存」。
这一步必须做——如果仍指向项目根目录,web/index.php加载时会尝试 require('../config/web.php'),而上级目录不可读,立刻报500且日志显示“Failed opening required '/www/wwwroot/your-site/requirements.php”。
改完后刷新站点,应能正常显示Yii2欢迎页或首页。
检查并修复 runtime 与 assets 权限
方法一:命令行修复(推荐)
在宝塔「终端」中执行: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 和 assets 目录 → 右键「属性」→ 用户组选 www → 权限设为 755 → 勾选「递归设置子目录和文件」→ 确定。
【注意:宝塔重启PHP或一键部署时可能重置权限,此步需每次部署后复查】
配置Nginx伪静态规则
第一步:进入站点设置 → 「伪静态」选项卡
第二步:删除原有内容,粘贴以下标准规则(非Laravel模板,避免兼容问题):
location / {<br> try_files $uri $uri/ /index.php?$args;<br>}
第三步:点击「保存」→ 返回「网站」列表 → 点击「重载配置」。
若已启用 urlManager['enablePrettyUrl'] = true 但URL仍带 index.php,先确认 web.php 中 'showScriptName' => false 已设置;再检查该规则是否生效——未重载配置则规则不运行。
禁用 .user.ini 防止 fatal error
在「文件」中进入站点根目录(即 /www/wwwroot/your-site),找到 .user.ini 文件;【执行 chattr -i .user.ini 后删除它】;若提示权限不足,请先在终端执行 chattr -i /www/wwwroot/your-site/.user.ini 再删。
不删会导致 require() 调用失败,报错 Fatal error: require(): Failed opening required ……,这是宝塔默认加的PHP防护机制,与Yii2的自动加载冲突。
验证PHP扩展与版本
进入「软件商店」→ 找到已安装的PHP版本(如7.4或8.0)→ 点击「设置」→「安装扩展」;确保勾选:mysqli、pdo_mysql、openssl、mbstring、gd、fileinfo、opcache。
返回「设置」→「配置修改」→ 搜索 error_reporting,改为 E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_WARNING;保存后点击「重启PHP」。











