Ответ 1
В этом случае режим изменяется текущим umask
, который 022
.
Способ работы umask
является субтрактивным. Вы берете начальное разрешение, данное mkdir
, и вычитаете umask
, чтобы получить фактическое разрешение:
0777
- 0022
======
0755 = rwxr-xr-x.
Если вы не хотите, чтобы это произошло, вам нужно временно установить umask
на ноль, чтобы он не влиял. Вы можете сделать это со следующим фрагментом:
$oldmask = umask(0);
mkdir("test", 0777);
umask($oldmask);
Первая строка изменяет umask
на ноль, сохраняя предыдущую в $oldmask
. Вторая строка делает каталог с использованием требуемых разрешений и (теперь не имеет значения) umask
. Третья строка возвращает umask
к тому, из чего она была первоначально.
См. PHP doco для umask и mkdir для более подробной информации.