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

时间:2011-06-20 06:59:49

标签: php directory chmod mode mkdir

我正在使用PHP的mkdir函数,我对$ mode参数有些困难。如果我没有指定参数,我将UNIX 755作为新目录的默认权限设置。我想将权限设置为UNIX 777,所以我按照你在这里看到的那样做了:

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

当我这样做时,会创建一个文件夹,但我无法用它做任何事情。实际上我甚至无法删除它!我所能做的只是通过FTP重命名...

然后我尝试设置$ mode ='0600';这使得一个可行的文件夹,但权限设置为UNIX 110.这怎么可能?它不应该是600的UNIX值吗?我在这里错过了一些转换吗?感谢。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

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

在umask上阅读更多内容,因为目录权限是umask和您指定的内容的组合。