php mkdir()和apache所有权问题

时间:2012-01-05 18:32:18

标签: php mkdir ownership

问题

我正在尝试通过PHP将文件上传到我自己的服务器。如果文件夹不存在,首先我尝试创建文件夹;

mkdir($folder, 0700);

我的脚本正在创建文件夹,但是apache是​​文件夹(和文件)的所有者,因此我无法访问我上传的文件。

我的服务器中有safe_mode。我仍然无法找到解决方案。

如果有人能帮我解决这个问题,我会很高兴。

注意: 我试过0755,0777没有改变任何东西。 Apache是​​创建的文件夹的所有者。

4 个答案:

答案 0 :(得分:2)

我建议重新配置网络服务器以使用suEXECsuPHP。这种方法的缺点是你被迫在CGI模式下使用PHP而不是Apache mod。不过,我还没有看到这在中低流量网站上成为一个问题。主要好处是您的脚本将以拥有它们的人的身份运行,因此您的脚本所做的任何新目录或文件将自动归所述用户所有。

最终,如果您的问题只是创建了新目录而不是文件,那么您不会存储任何不应该通过窥探方式阅读的内容,然后chmod($path, 0755);将解决您的问题。

答案 1 :(得分:1)

以下代码段创建具有权限777(或任何指定权限)的目录:

 $oldumask = umask(0);
 mkdir($path, 0777);
 umask($oldumask);

答案 2 :(得分:0)

当然。上传目录必须other可写/可访问,即:xx7:

// fill APPPATH with a suitable directoy name

if ( ! file_exists(APPPATH . 'uploads'))
{
    mkdir(APPPATH . 'uploads', 0757, TRUE);
}

7: owner permissions, ie: rwx
5: group permissions, ie: rx
7: other permissions, ie: rwx

答案 3 :(得分:0)

为什么首先将权限设置为700? 755将允许“任何人”阅读您的文件和文件夹,在大多数情况下,它实际上是可以接受的。