我正在尝试使用PHP创建一个文件夹,然后在其中创建另一个文件夹。
如果这是目录结构,我有
/home/site (owner : user1)
现在,我用
创建文件夹mkdir("/home/site/newdir",0777); (user : apache)
创建目录/home/site/newdir,但该目录的用户为"apache"
现在做
mkdir("/home/site/newdir/anotherdir",0777);
不会在newdir中创建新的目录。
请帮助。我认为这是业主的问题。我不能使用chmod()更改所有者。所有者保持不变。
是什么原因导致的?
EDIT:
<?php
error_reporting(E_ALL);
mkdir("./m",0777); // works
mkdir("./m/v",0777); // doesnt work
页面上没有错误
var_dump(is_writeable("./m")) // returns bool(true)
EDIT:这已被修复。对于其他可能面临同样问题的人来说,这是因为PHP的安全模式处于"打开"状态。我仍然不知道安全模式到底是怎么做的,它不允许你创建嵌套目录。
但它现在工作。感谢大家的阅读。
mkdir()
创建的目录模式受到当前umask的影响,这就是chmod()
不能为您工作的原因。
试题:
$old_mask = umask(0);
mkdir("/home/site/newdir/anotherdir",0777);
umask($old_mask);