安装程序报错 mkdir (): Permission denied 解决

张先生
张先生 主理圣羽星庭 执序官者社群翘楚勋望元宿
社区管理
部署教程 141 浏览 0 回复

问题现象

后台安装程序时抛出错误:
mkdir (): Permission denied

报错含义:PHP 尝试创建文件夹,但是目录权限不足,没有写入创建目录的权限。

常见原因

  1. 网站目录所属用户和 PHP 运行用户不一致
  2. 文件夹权限设置过低,无写入新建目录权限
  3. 宝塔 / 面板防跨站开启导致权限拦截
  4. 上级目录本身没有写权限,无法创建子目录

排查解决步骤

  1. 确认报错是哪个目录无法创建,看完整报错路径,定位目标文件夹
  2. 修改目录权限
    Linux 环境:
    将网站根目录设置权限 755,数据、缓存、上传目录设置 775
chmod -R 755 网站目录路径
chmod -R 775 缓存/上传目录路径
  1. 修改目录归属用户,www-data 或者 www,根据服务器 PHP 运行用户调整
chown -R www:www 网站目录路径
宝塔面板一般用户组为 www:www,原生 LNMP 一般为 www-data:www-data
  1. 面板用户检查
    宝塔用户:网站设置,关闭防跨站测试是否恢复,确认网站运行用户和目录所属用户一致。不要直接全局 777,存在安全风险。
  2. 磁盘检查
    查看服务器磁盘是否已满,磁盘占满也会报类似权限错误
df -h
  1. SELinux 环境
    CentOS 开启 SELinux 会拦截目录写入,临时关闭测试
setenforce 0

如果关闭后正常,需要配置 SELinux 上下文,不要永久关闭 SELinux。

避坑提醒

  1. 不要直接给全站 777 权限,安全隐患大,仅给缓存、上传需要读写的目录开放高权限
  2. 权限修改后,刷新页面重新执行安装,清除程序缓存
  3. 虚拟主机用户联系主机商确认目录读写权限是否开放


评论0
评论 · 0
还没有评论
微信客服 微信客服