Appearance
问题现象
在安装、部署或运行 EBAOZU 系统时,页面或终端提示以下错误之一:
The directory "/www/wwwroot/xxx/runtime" is not writablefile_put_contents(/www/wwwroot/xxx/...): Failed to open stream: Permission deniedmkdir(): Permission denied- 无法上传图片或上传后提示目录无写入权限。
根本原因
Linux 系统对文件与目录有严格的用户所有权(Owner)和权限位(Permission)限制。 EBAOZU 的 Swoole 进程及 Web 服务器(Nginx/PHP-FPM)通常以 www 用户身份运行。若源码解压、Git 拉取或由 root 用户手动创建的文件未赋予 www 用户的读写权限,就会导致写入失败。
解决方案
方法一:通过 Linux 命令行一键修复(推荐)
通过 SSH 连接到服务器,执行以下命令将项目所有权和关键目录写权限修正:
bash
cd /www/wwwroot
chown -R www:www 你的项目目录
# 设置通用文件与目录权限为 755
chmod -R 755 你的项目目录
# 为需要写入的缓存与上传目录赋予读写权限
chmod -R 777 你的项目目录/runtime
chmod -R 777 你的项目目录/public/uploads方法二:通过宝塔面板可视化设置
- 登录宝塔面板,进入【文件】管理。
- 找到项目目录(如
/www/wwwroot/你的项目目录)。 - 勾选整个项目目录,点击上方或右侧的【权限】。
- 在弹出的权限设置框中:
- 所有者选择:
www - 用户组选择:
www - 权限设置为:
755,勾选【应用到子目录】后点击确定。
- 所有者选择:
- 针对
runtime目录和public/uploads目录,单独设置权限为777(包含子目录)。
验证与测试
权限修复完成后,在终端以 www 用户身份测试写入或直接重启守护进程:
bash
supervisorctl restart ebaozu_v4再次在后台测试上传图片或刷新页面,确认权限报错消除。