You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指定自定义用户运行Supervisor时权限报错的解决方法

解决Supervisor日志权限拒绝问题

问题根源

切换到UID为1000的backend用户后,/var/log和/var/run目录默认属于root用户,backend用户没有写入权限,导致Supervisor无法创建日志文件/var/log/supervisord.log和PID文件,触发如下错误:

IOError: [Errno 13] Permission denied: '/var/log/supervisord.log'

解决方案

方法一:调整Supervisor日志和PID文件路径(推荐)

将Supervisor的日志和PID文件放到backend用户有权限的目录,比如已创建的/var/log/php:

  1. 修改supervisor.conf中的路径配置:
[supervisord]
nodaemon=true
loglevel = info
logfile=/var/log/php/supervisord.log  # 改为php日志目录下
pidfile=/var/run/supervisord.pid
  1. 在Dockerfile中确保/var/log/php目录归backend所有(替换原有的chmod 777,更安全):
# Log file
RUN mkdir /var/log/php
RUN chown backend:backend /var/log/php
RUN touch /var/log/php/errors.log

如果PID文件仍有权限问题,可将其移至backend家目录:

pidfile=/home/backend/supervisord.pid

方法二:赋予backend用户目录写入权限

在Dockerfile中添加命令,让backend用户所在组拥有/var/log和/var/run的写入权限:

# 给backend用户组赋予日志和运行目录的写入权限
RUN chown -R root:backend /var/log /var/run
RUN chmod -R g+w /var/log /var/run

额外注意事项

  • 确保docker-compose挂载的./src:/var/www目录,宿主机端权限为UID1000的用户可读写,避免Laravel权限问题复发。
  • 避免使用chmod 777这类过度宽松的权限,优先通过用户/组权限控制保障安全性。

内容的提问来源于stack exchange,提问作者sfarzoso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:01:00