1

我正在创建一个具有自动更新功能的 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 daemon uid=1(daemon) gid=1(daemon) groups=1(daemon),1000(bitnami)


所以; 如果“daemon”用户在“bitnami”组中并且该文件夹具有 775 访问权限,那么为什么它会因“mkdir_failed”而失败?

(注意;将“777”分配给父文件夹可以解决问题,但由于安全原因,这不是一个选项)。

谢谢!- 格特扬


更新;

在对 Linux 进行了更多调查之后,我读到 Linux 会自动为每个用户创建一个“私人”组(因此 bitnami 用户的 bitnami 组等)。我不知道问题是否是由于我正在尝试(并且显然成功?)将其他用户添加到同一组的事实引起的。


更新;

请参阅下面关于我如何解决我的问题的答案。

4

2 回答 2

1

好的,谢谢大家的意见。我最终决定不继续我的调查,而是转向另一个方向,因为必须依赖容器的文件夹来获得“775”权限对于框架来说是不明智的(许多客户将拥有 755,所以让它工作group 很好,但最终不会解决我的问题)。

相反,我进一步调查了 WordPress 自己如何下载和解压缩主题,并决定遵循这条路线。

我试图解决的关键问题是,解压后的文件不属于“守护进程”用户,而是属于“bitnami”用户。它“模拟”给守护进程用户的原因是因为我手动告诉代码使用“直接”fs_method(看起来,WP 提供了多种与文件系统交互的方式,其中最简单的方式是“直接”,看这里)。但是,使用“直接”FS_METHOD 是我遇到此问题的核心原因,因为它将使用网络服务器的凭据(在我的情况下为“守护程序”用户)。因此,通过使用不同的 FS_METHOD,我知道能够使用正确的“bitnami”用户解压缩文件夹中的文件(因为容器是所有者并且具有权限(775 或 755 无关紧要)现在我的问题已解决. 请注意,现在 PHP 将使用 FTP,而不是直接写入文件系统(参见此处)。

于 2012-10-24T15:45:04.890 回答
0

如果您将文件夹的组更改为守护程序,它是否有效?

chgrp -R 守护进程 /opt/bitnami/apps/wordpress/htdocs/wp-content/themes/nexus

于 2012-10-24T15:43:01.613 回答