Thinkphp5在docker环境下日志权限问题

1,322 阅读1分钟

问题描述

运行环境:linux+docker+nginx+php+thinkphp5.0
上述环境下有些日志没有写入文件

问题出处

文件被创建时候用户权限的问题。cli模式和php-fpm模式运行的用户不一致。cli模式下创建的文件用户权限为root,php-fpm模式创建的文件用户权限为1000。如下图:

问题分析

Docker搭建php环境,php-fpm主进程是root用户,php脚本的执行是子进程执行的,而子进程是www-data用户(docker要求子进程用户要低于root用户),映射到了宿主机用户为1000。如下图:

解决方案

让cli模式下和php-fpm模式下创建的文件用户权限一致。

  • 宿主机创建一个www-data用户组和www-data用户,将此用户映射到docker 容器里面。docker run -u www-data:www-data 或者Docker-compose.yaml的配置如下
  • cli模式下执行php脚本语句:docker exec -u www-data php 项目绝对路径