2010-12-08 3 views
5

с помощью PHP 5.2.14, это то, что происходитPHP MkDir 0777 неудачу CHMOD 0777 работает

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

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

не нашли каких-либо связанных с ними ошибок в списке ошибок PHP, любую идею?

+0

Что вы Umask? (Использует ли mkdir umask?) – Rup 2010-12-08 17:32:21

ответ

5

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

+0

Возможно, это работает, но весь принцип umask обычно не та, что вы ожидаете. – 2010-12-08 19:11:27

6

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

14
$old = umask(0); 
mkdir($dir,0777); 
umask($old); 

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

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

Пример)

PWD /данные/Журнал

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

/данные/журнал должны 0777.