bt 11 批量修复网站目录权限最稳,自动扫描/www/wwwroot/下真实站点,执行chown -r www:www、chattr -r -i及权限重置,跳过软链接与合规路径,避免误操作。

直接用 bt 11 批量修复网站目录权限最稳
宝塔官方维护的 bt 11 是目前最可靠的一键修复方式,它能自动扫描 /www/wwwroot/ 下所有真实网站目录(跳过软链接和非站点路径),逐个执行 chown -R www:www 和权限重置,还跳过已合规的路径,避免误操作。
常见错误现象:手动 chown 后 PHP 还报“Permission denied”,往往是因为没清掉 i 属性锁,或子目录里混进了 root 所有者文件;bt 11 内部已包含 chattr -R -i 步骤,省去排查环节。
- SSH 登录后直接运行:
bt 11→ 选1→ 确认列表 → 按y - 不建议在面板图形界面点“一键修复”后再跑这个命令,可能重复触发,尤其当某些目录被设为
750时,bt 11默认按755/644覆盖,会降级安全性 - 若你用的是 PHP 8.4+,修复后务必检查
open_basedir是否显式包含网站根目录,否则仍会fopen(): failed to open stream
遇到 chattr: Operation not permitted 就说明被锁死了
很多“修复失败”不是命令写错,而是目录被加了不可变属性(i),常见于宝塔升级、安全加固或被恶意脚本篡改后。此时 chown 和 chmod 全部静默失效,连 ls -l 看起来都正常,但就是读不了、写不了。
- 先确认是否被锁:
lsattr /www/wwwroot/your-site.com,如果输出带----i--------e---,就坐实了 - 必须先解锁再修权限:
chattr -R -i /www/wwwroot/your-site.com - 别漏掉隐藏目录,比如
.user.ini或.htaccess文件也可能单独被锁,可加-a一并清除:chattr -R -a -i /www/wwwroot/your-site.com
chown -R www:www 不等于万事大吉
所有权改对只是第一步,PHP-FPM 能否读取、Nginx 能否访问,还取决于权限位本身。尤其当网站含上传功能或缓存目录时,全站统一 644/755 反而会导致 file_put_contents(): failed to open stream。
- 标准策略是:目录
755,文件644,但runtime、uploads、cache这类必须写入的目录得单独放开:chmod -R 755 /www/wwwroot/your-site.com/runtime - 别用
chmod -R 755 /www/wwwroot/your-site.com这种粗暴命令——它会把所有 .php 文件也变成可执行,Nginx 可能直接下载源码而非解析 - 验证是否真生效:
ls -l /www/wwwroot/your-site.com | head -3看前几行归属和权限,再ps aux | grep php-fpm | grep master确认主进程用户确实是www
面板自身 404 或白屏?别修网站,先救 /www/server/panel
如果登录宝塔后一片空白、点任何菜单都 404,问题大概率不在网站目录,而在面板自己的权限错乱。Nginx/Apache 加载不了 /www/server/panel/static/ 下的 JS/CSS,或读不到 /www/server/panel/data/config.json,就会彻底失联。
- 立刻重置面板核心目录:
chown -R root:root /www/server/panel+chmod -R 755 /www/server/panel - 关键子目录要单独放行:
chmod 755 /www/server/panel/data /www/server/panel/logs(否则 session 写不进、日志打不开) - 修复后必须重启:
bt restart,只 reload Nginx 不管用,面板后端服务(panel_main.py)也得重新加载配置
真正麻烦的从来不是“怎么修”,而是修完发现某个子目录早被第三方脚本悄悄加了 i 属性,或者 open_basedir 里漏了一条路径——这些细节不查日志、不看 lsattr 和 ps,光靠点击面板按钮根本绕不过去。










