我正在创建一个具有自动更新功能的WordPress框架。当系统更新框架时,它会下载.zip文件(工作正常,存储在临时文件夹中),然后尝试将该zip文件解压缩到主题中的某个位置。解压缩时,会抛出一个错误,抱怨无法创建目录(“mkdir_failed”)。
目标文件夹的父级对用户“bitnami”和组“bitnami”具有权限“775”;
root @ linux:/ home / bitnami#ls -al / opt / bitnami / apps / wordpress / htdocs / wp-content / themes / nexus ... drwxrwxr-x 6 bitnami bitnami 4096 Oct 23 14:02 nexusframework ...
我试图将“守护进程”用户放在“bitnami”组中;
usermod -a -G bitnami守护程序
我会说,确实正确分配,正如我所说:
root @ linux:/ home / bitnami #id守护进程 uid = 1(守护进程)gid = 1(守护进程)groups = 1(守护进程),1000(bitnami)
因此;如果“守护进程”用户位于“bitnami”组并且该文件夹具有775访问权限,那么为什么它会因“mkdir_failed”而失败?
(注意;将“777”分配给父文件夹可以解决问题,但由于安全性,这不是一个选项。)
谢谢! - Gert-Jan
更新
在对Linux进行更多调查之后,我读到Linux会自动为每个用户创建一个“私有”组(比如bitnami用户的bitnami组等)。我不知道问题是否是由于我正在尝试(并且显然已成功?)将其他用户添加到同一组中而引起的。
更新
请参阅下面的答案,了解我如何解决问题。
答案 0 :(得分:1)
好的,感谢所有评论。我最终决定不继续我的调查,而是寻求另一个方向,因为不得不依靠容器的文件夹获得“775”许可对于框架来说是不明智的(许多客户将会有755,所以让这个工作为一个小组很好,但最终无法解决我的问题。)
相反,我进一步研究了WordPress如何自己下载和解压缩主题,并决定遵循这条路线。
我试图解决的关键问题是,没有解压缩文件由'守护程序'用户拥有,而是由'bitnami'用户拥有。它“模仿”守护程序用户的原因是因为我手动告诉代码使用“直接”fs_method(因为看起来,WP提供了各种与文件系统交互的方式,其中最简单的是'直接',见here)。但是,使用'direct'FS_METHOD是我遇到此问题的核心原因,因为那个人将使用webserver的凭据(在我的情况下是'daemon'用户)。所以通过使用不同的FS_METHOD,我知道能够使用正确的'bitnami'用户解压缩文件夹中的文件(因为容器是所有者并且具有权限(775或755无关紧要)现在我的问题解决了请注意,现在PHP不使用直接写入文件系统,而是使用FTP(参见here)。
答案 1 :(得分:0)
如果将文件夹组更改为守护程序,它是否有效?
chgrp -R daemon / opt / bitnami / apps / wordpress / htdocs / wp-content / themes / nexus