PHP - Apache 无法写入刚刚创建的目录

PHP - Apache can't write in a directory that just created

我有一个允许将文件分配给产品的脚本。为避免名称文件重复的问题,每个产品都有一个特定的目录。

包含所有产品特定目录的更新目录如下所示。

4 drwxrwx--x 3 佩佩佩佩 4096 1 月 9 日 17:08。
20 drwxrwxr-x 35 pepe pepe 20480 1 月 9 15:42 ..
4 drwxrwxr-x 2 apache apache 4096 1 月 9 17:08 001

Apache 在用户 "apache" 下运行并且 "apache" 被设置为组 "pepe" 的一部分。

如果我尝试将文件上传到没有创建目录的产品,脚本会创建目录(具有为目录“001”显示的权限),然后尝试上传文件,但失败了。

如果我在 SSH 中将目录所有者更改为 pepe.pepe,然后重新上传文件,它就完美了。

为什么 apache 创建了下一行代码无法写入的目录?

我如何防止必须手动更改创建目录的所有权,因为我的客户在将文件分配给他的所有产品时显然不能这样做。

您可以尝试在 PHP 中使用 chgrp() 将组更改为 "pepe" 吗?如果它不起作用,至少错误会给你提示。另一个来自"safe mode":

When safe mode is enabled, PHP checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed.

我会尝试(手动)将父目录的所属组更改为 "apache"。

您应该更改对刚刚创建的目录的权限:

chmod('/path/to/directory', 0775);