目录权限与写入失败

分类:常见问题 · 更新于 2026-11-05 · 约 1249 字

安装、上传、写配置时报“无权限/不可写”的原因与修复,含属主、权限、SELinux 与磁盘空间。

一、现象

常见提示有:安装向导提示某目录不可写、后台保存设置失败、上传图片报错、生成缓存或站点地图失败、页面出现 Permission denied。这类问题的根因只有一个:PHP 运行用户对该路径没有写权限。

二、先确认运行用户

PHP-FPM 的运行用户决定谁需要写权限,宝塔面板下通常是 www。先核对:

ps aux | grep php-fpm | head     # 看进程的运行用户
ls -ld /www/wwwroot/你的域名

三、属主与权限的正确设值

chown -R www:www /www/wwwroot/你的域名
find /www/wwwroot/你的域名 -type d -exec chmod 755 {} \;
find /www/wwwroot/你的域名 -type f -exec chmod 644 {} \;

按用途区分目录,最容易出问题的是这几个:

目录作用权限建议
upload/上传附件属主 www,755
data/缓存、会话等运行数据属主 www,755
config/站点配置与路由安装或保存设置时需可写,日常可收紧
install/安装向导安装期可写,装完立即删除或改名
提示:不要图省事把整站设为 777。777 等于向所有账户开放写权限,是被挂马的常见入口,务必避免。

四、权限正常却仍写入失败

  • SELinux:开启时会在文件权限之外再加一层限制。getenforce 显示 Enforcing 时,可临时设为宽容模式确认是否为它拦截,再决定长期策略。
  • 磁盘或 inode 满:没有剩余空间时同样表现为写入失败。
df -h        # 看剩余空间
df -i        # 看 inode 是否耗尽

清理日志与过期附件可释放空间,定期清理的做法见「网站访问慢与性能优化」一篇。

五、验证写入

用运行用户身份写一个测试文件,能建能删即说明该目录权限正确:

sudo -u www touch /www/wwwroot/你的域名/upload/_t.php
ls -l /www/wwwroot/你的域名/upload/_t.php
rm -f /www/wwwroot/你的域名/upload/_t.php

若仍写入失败,用 ls -l 从站点根逐级检查到目标目录,确认每一级都有执行(x)权限——中间任何一级缺 x,即使目标目录本身是 755 也进不去。

六、常见提示对照表

页面提示涉及目录处理方向
安装向导提示目录不可写install/、config/安装期授予 www 写权限
后台保存设置失败config/、data/属主与权限、检查磁盘空间
上传图片报错upload/属主 www、755,并检查 PHP 上传限制
缓存或站点地图生成失败data/权限是否可写、inode 是否耗尽

按表定位到具体目录后,用第三节的命令统一修正属主与权限即可。

相关教程

文档对不上实际界面?可在常见问题中查找排查步骤,或按「安装部署」中的环境要求核对版本。