1

我正在使用 PHP 的 mkdir 函数,但在使用 $mode 参数时遇到了一些困难。如果我不指定参数,我会将 UNIX 755 作为新目录的默认权限设置。我想将权限设置为 UNIX 777,所以我这样做了,如下所示:

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

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

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

4

3 回答 3

1

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

于 2011-06-20T07:01:21.493 回答
0

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

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

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

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

于 2011-06-20T07:04:19.540 回答
0

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

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

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

于 2011-06-20T07:05:41.270 回答