当日志的配置从默认的 single 改为 daily 之后,生成的日志的所属变成 PHP-fpm 的用户和组了,会导致实际系统用户在执行 migrate 时没有权限。
total 1092
drwxrwxrwx 2 kiyoma kiyoma 4096 4月 25 09:47 ./
drwxrwxrwx 6 kiyoma kiyoma 4096 4月 2 09:14 ../
-rw-rw-r-- 1 kiyoma kiyoma 14 3月 25 16:09 .gitignore
-rw-r--r-- 1 php73 www 137 4月 24 17:16 laravel-2019-04-24.log
-rw-r--r-- 1 php73 www 43010 4月 25 10:37 laravel-2019-04-25.log
-rwxrwxrwx 1 kiyoma kiyoma 1044673 4月 23 20:41 laravel.log*
最底下的laravel.log是原本默认的single模式下的日志文件。
但是自从把配置修改为daily后,日志文件的所属就变了。
原本我还没发现这一点,知道今天改了表结构,要跑migrate的时候,提示
"laravel-2019-04-25.log" could not be opened: failed to open stream: Permission denied
我才查出了这个问题。
我想,在正常的生产环境部署下,访问终端的管理员用户,和运行php-fpm的用户,肯定不会是同一个吧?那应该如何解决这个问题呢?
@kiyoma 比如我们给 PHP-fpm 的用户是 www,在
/etc/passwd
中是这样的这个用户是不能登录 shell 的,
然后添加一个新用户同时指定用户ID 和用户组
在
/etc/passwd
就多了一条记录这样我们在终端中用 su 切换 nobody 用户上执行命令,就没有权限问题了
你会发现 nobody 用户创建文件或执行的命令都是显示 www 用户的。
别忘了给项目赋予同样的用户所属者和所属组