mkdir(): Permission denied 多数是www用户无父目录x权限,非配额问题;若报错含“Disk quota exceeded”且quota -u www末尾带*才属配额超限。

mkdir(): Permission denied 是权限还是配额问题?
看到这个报错,别急着 chmod 777。它背后可能是两种完全不同的原因:Permission denied 多数是 www 用户没权限进父目录,Disk quota exceeded 则是配额已满——两者日志表现接近,但修复路径完全不同。
- 先确认错误类型:查宝塔面板日志
/www/server/panel/logs/error.log或 PHP 错误日志,看完整报错是否含Disk quota exceeded - 如果是配额问题,运行
quota -u www,末尾带*就坐实了;临时放开用setquota -u www 0 0 0 0 /dev/vda1 - 如果是权限问题,重点检查
/www和/www/wwwroot的执行位(x):用namei -l /www/wwwroot/example.com看每一级,只要某层是drwxr-x---且组不是www,www 用户就进不去 - 顺手确认 PHP-FPM 实际 UID:
ps aux | grep php-fpm,必须和id -u www一致,否则改配置也没用
df -i 显示 iuse% 98% 但 df -h 还剩 40GB?删 session 文件
这是典型的 inode 耗尽,不是磁盘空间问题。宝塔不会主动告诉你哪堆小文件撑爆了 inode,得自己定位。
- 先跑
df -i确认根分区或/www分区的IUse%是否超 95% - 查 PHP session 路径:
php -i | grep session.save_path,常见为/www/sess或/tmp - 统计数量:
find /www/sess -name "sess_*" -type f | wc -l,若超过 10 万,基本就是它 - 安全删除:
find /www/sess -name "sess_*" -type f -print0 | xargs -0 rm -f;别用rm *,会因参数过长失败 - 删完如果还报错,说明有进程正占用已删文件:用
lsof +L1查“deleted”状态句柄,然后systemctl restart php-fpm
新建站点提示“目录已存在”,但目录明明是空的
宝塔判断“已存在”不只看文件系统,更依赖自己的数据库记录和配置残留。手动删过目录≠面板认为它已释放。
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- 先清缓存:
bt 19→ 选清空面板缓存;再修库:bt 10→ 选修复面板数据库 - 进
/www/wwwroot/手动检查目标目录是否存在,哪怕为空也要删掉:rm -rf /www/wwwroot/example.com - 检查有没有其他站点绑定了同一路径:在面板“网站”列表里逐个点开“设置”→“网站目录”,比对
root字段是否重复 - 如果用了专业版,直接点“一键检测网站配置”,它能扫出
server_name冲突、SSL 证书路径失效等隐藏硬伤
Nginx 配置文件错误导致创建失败,怎么快速定位?
面板创建站点本质是生成 Nginx 配置并重载服务,任何语法或路径错误都会卡在这步。别靠猜,用内置工具验证。
- 创建失败后,立刻去面板“网站”列表,找刚建到一半的站点,点“设置”→“配置文件”,看内容是否生成(有时连文件都没写成)
- 如果文件存在,终端执行
nginx -t,它会明确指出哪行哪列语法错,比如括号不匹配、root路径不存在、或ssl_certificate指向了空文件 - 特别注意 SSL 相关路径:
/etc/letsencrypt/live/example.com/fullchain.pem如果不存在,或者chown没给 www 读权限,Nginx 就加载失败 - 临时绕过:新建站点时先不勾选“SSL”,成功后再单独申请,能排除证书环节干扰
真正卡住人的,往往不是命令记不牢,而是没意识到宝塔的“存在判断”横跨三层:文件系统 + 面板数据库 + Nginx 运行态。删完目录、清完缓存、重载完服务,仍失败?那就得打开 /www/server/panel/data/panel.db 直接查 SQLite 里有没有残留的 site 记录。










