如何设置 Laravel 以生成具有所需权限的文件

问题描述

我有一个作为 Jenkins CI 作业运行的部署 BASH 脚本。它在 jenkins 用户 下运行。部署需要删除旧目录并替换为新目录。但有一个问题。 Laravel 使用 chmod 644 作为 www-data 用户 生成会话或缓存等文件。这意味着虽然Jenkins在www-data他不能删除生成文件,因为组只有读取权限。

我在 Laravel documentation 中发现了一些有关权限的信息,但它不起作用,因为它仅适用于存储/应用程序文件夹。

问题是有没有办法强制 Laravel 或 PHP Demon 生成具有所需权限的文件,例如664?希望是。感谢您的帮助。

解决方法

我的直接解决方案是以 root 身份运行无休止的后台脚本,它每 10 秒查找并删除所需的目录。它作为 nohup 运行,所以尽管我关闭了终端,它仍在运行。

2021-06-18 17:56:16.419 [TRACE] process(678): (�~�{"data":[{"c":["1","8","12"],"p":616.7,"s":"TSLA","t":1624031775766,"v":4},{"c":["1","v":1},"p":616.69,"p":616.72,"v":6},"v":1}],"type":"trade"})
2021-06-18 17:56:16.419 [TRACE] afterDecoding(674): {"data":[{"c":["1","type":"trade"}
2021-06-18 17:56:16.419 [TRACE] matched frame: Framedata{ optcode:TEXT,fin:true,rsv1:false,rsv2:false,rsv3:false,payloadlength:[pos:0,len:674],payload:{"data":[{"c":["1","type":"trade"}}```
,

最终的解决方案是通过 setfacl 命令为父目录设置 ACL 权限。

setfacl -R -dm "g:www-data:rw" /path/to/dir

这确保生成的文件将从父目录继承 ACL 权限。