需要帮助通过PHP在新目录上设置Chmod权限


Need Help Setting Chmod Permissions on New Directory via PHP

我使用的是PHP的mkdir函数,在$mode参数方面遇到了一些困难。如果我没有指定参数,我会得到UNIX755作为新目录的默认权限设置。我想将权限设置为UNIX 777,所以我这样做了,正如您在这里看到的:

$mode = '0700';
mkdir($newdir, $mode);

当我这样做的时候,会创建一个文件夹,但我不能对它做任何事情。事实上,我甚至不能删除它!我所能做的就是通过FTP重命名它。。。

然后我尝试将$mode设置为"0600";这就形成了一个可行的文件夹,但权限设置为UNIX110。这怎么可能?它不应该是UNIX值600吗?这里有没有我错过的转换?谢谢

模式应该是一个数字,而不是字符串。请改用$mode = 0700;

根据php.net手动mkdir函数有这样的描述:

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

这里的$mode是一个整数(不是字符串),它必须以"0"开头,因为它基于8(而不是基于10)。

更新:(来自php.net)请注意,您可能希望将模式指定为八进制数,这意味着它应该有一个前导零。该模式也由当前的umask修改,您可以使用umask()进行更改

如果您想将其设置为0777,请尝试以下操作:

oldumask = umask(0);
mkdir('mydir', 0777); 
umask($oldumask);

阅读更多关于umask的信息,因为目录权限是umask和您指定的内容的组合。