PHP mkdir 0777 сбой chmod 0777 работает - PullRequest
6 голосов
/ 08 декабря 2010

с использованием PHP 5.2.14, вот что происходит

[user@VE213 public_html]$ php -r "mkdir('directory', 0777);"
[user@VE213 public_html]$ ls -lt
drwxrwxr-x  2 rankranger rankranger 4096 Dec  8 17:28 directory

[user@VE213 public_html]$ php -r "chmod('directory', 0777);"
[user@VE213 public_html]$ ls -lt
drwxrwxrwx  2 rankranger rankranger 4096 Dec  8 17:28 directory

Не нашли связанных ошибок в списке ошибок php, есть идеи?

Ответы [ 3 ]

16 голосов
/ 09 августа 2012
$old = umask(0);
mkdir($dir,0777);
umask($old);

Прочтите это, http://php.net/manual/en/function.mkdir.php

Дополнительно, проверьте верхний каталог, в котором вы создаете новый каталог.

Пример)

pwd / data / log

$dir="/data/log/query";
$old = umask(0); 
mkdir($dir,0777); 
umask($old); 

/ data / log должен 0777.

6 голосов
/ 08 декабря 2010

Это не ошибка. См. http://php.net/umask - у вас, вероятно, umask 0002. Разрешение того, что вы создаете, равно yourmode & ~umask, поэтому для всех уходит бит записи от 0777.

5 голосов
/ 08 декабря 2010

Работает как задокументировано.mkdir уважает umask, chmod - нет.

...