Режим изменяется в зависимости от вашего текущего 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 для umask и mkdir для получения более подробной информации.