2010-12-08 100 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的bug列表中的任何相關的錯誤,任何想法?

+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 - 你可能有0002的umask的創建是什麼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