Нужна помощь в настройке разрешений Chmod для нового каталога через PHP - PullRequest
1 голос
/ 20 июня 2011

Я использую PHP-функцию mkdir, и у меня возникли некоторые трудности с параметрами $ mode. Если я не укажу параметр, я получу UNIX 755 в качестве настроек разрешения по умолчанию для нового каталога. Я хотел бы установить разрешение для UNIX 777, поэтому я сделал это, как вы видите здесь:

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

Когда я делаю это, папка создается, но я ничего не могу с ней сделать. На самом деле я даже не могу удалить это! Все, что я могу сделать, это переименовать его через FTP ...

Затем я попытался установить $ mode = '0600'; Это делает рабочую папку, но права доступа установлены в UNIX 110. Как это возможно? Разве это не должно быть значение UNIX 600? Есть ли какое-то обращение, которое я пропускаю здесь? Спасибо.

Ответы [ 3 ]

1 голос
/ 20 июня 2011

Режим должен быть числом, а не строкой.Попробуйте $mode = 0700; вместо.

0 голосов
/ 20 июня 2011

Если вы хотите установить его на 0777, попробуйте следующее:

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

Узнайте больше о umask, поскольку права доступа к каталогу являются комбинацией umask и того, что вы укажете.

0 голосов
/ 20 июня 2011

В соответствии с руководством php.net функция mkdir имеет следующее описание:

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

$ mode здесь представляет собой целое число (не строку), и его нужно начинать с «0», потому что оно основано на 8 (не на основе 10).

Обновление: (с php.net) Обратите внимание, что вы, вероятно, хотите указать режим в виде восьмеричного числа, что означает, что он должен иметьведущий ноль.Режим также изменяется текущим значением umask, которое можно изменить с помощью umask ().

...