2015-01-09 72 views
2

我有一个脚本允许将文件分配给产品。为避免名称文件重复出现问题,每个产品都有一个特定的目录。PHP - Apache无法写入刚刚创建的目录

包含所有产品特定目录的uplad directoy看起来像这样。

4 drwxrwx - x 3 pepe pepe 4096 Jan 9 17:08。
20 drwxrwxr-×35佩佩佩佩20480 01月09日15时42 ..
4 drwxrwxr-×2阿帕奇阿帕奇4096 1月9日17时08分001

Apache下用户 “阿帕奇” 和 “Apache” 运行设置作为“pepe”组的一部分。

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

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

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

如何避免必须手动将所有权更改为所创建的目录,因为当将文件分配给他的所有产品时,我的客户显然无法做到这一点。

+0

确定Apache是​​做写作?你的脚本文件使用什么语言?... – War10ck 2015-01-09 20:38:17

+0

尝试mkdir('path/to/dir',0700)该模式似乎对我最有效。哦,并确保创建目录的脚本是由apache拥有:apache而不是pepe:pepe – rwhite35 2015-01-09 20:44:17

+0

@ war10ck脚本在PHP – 2015-01-09 21:02:23

回答

0

你可以在你的PHP中尝试chgrp()来将组更改为“pepe”吗?如果它不起作用,至少这些错误会给你一个提示。另一条来自“安全模式”:

当启用安全模式时,PHP检查是否文件或目录被 时有相同的UID(所有者)是 正在执行的脚本运行。

我会尝试更改(手动)父目录的拥有组以“apache”。

+0

这工作完美..我已经试过chown()但返回一个禁止所以我认为chgrp()将返回相同,但显然不是。 – 2015-01-09 21:24:26

0

你应该改变权限刚创建的目录:

chmod('/path/to/directory', 0775); 
相关问题