2010-12-08 6 views
5

en utilisant PHP 5.2.14, ce qui arrivePHP mkdir 0777 fail chmod 0777 fonctionne

[[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 

n'a pas trouvé d'insectes connexes dans la liste des bogues php, une idée?

+0

Quelle est votre umask? (Est-ce que mkdir utilise umask?) – Rup

Répondre

5

Travailler comme documenté. mkdir respecte umask, pas chmod.

+0

Cela peut fonctionner, mais le principe entier de umask n'est généralement pas ce que vous attendez. –

6

Ce n'est pas un bug. Voir http://php.net/umask - vous avez probablement un umask de 0002. L'autorisation de ce que vous créez est yourmode & ~umask, il prend la écriture peu pour tout le monde loin de 0777.

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

Lire ce, http://php.net/manual/en/function.mkdir.php

supplémentaires , Vérifiez le répertoire supérieur que vous créez un nouveau répertoire.

Exemple)

PWD /data/log

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

/data/log doivent 0777.

Questions connexes