2012-03-04 133 views
2

這似乎是一個常見問題,但我似乎無法找到我正在尋找的確切答案。 我在OSX上運行XAMPP,並在我的Web應用程序中試圖讓管理員創建一個目錄,如果沒有新的目錄。因此,在htdocs/mywebapp/images下,如果一個目錄不存在,比如說2012,那麼mkdir()並開始上傳文件到該目錄。php mkdir()權限被拒絕mac

用ls從mywebapp目錄-l顯示,圖像目錄作爲

drwxr-xr-x 18 myusername admin 612 Feb 12 17:32 images 

創造所以我想的第一件事就是

sudo chmod 0775 images 

這並沒有幫助。綜觀httpd.config文件顯示用戶/組被定義爲WWW:萬維網所以我試圖改變所有者/組到:

sudo chown www:www images 

這導致,正如預期:

drwxrwxr-x 18 _www  _www  612 Feb 12 17:32 images 

但是,我再次獲得了權限被拒絕的錯誤。所以,我不知道下一步是什麼。 我使用得到這一點的PHP代碼是在這裏:

$directory_self = dirname(__FILE__); 
$base_image_path = $directory_self . '/images/'; // outputs "/Applications/XAMPP/xamppfiles/htdocs/mywebapp/images/" 
$year = '2012'; 
$image_path = $base_image_path . $year . '/'; // outputs "/Applications/XAMPP/xamppfiles/htdocs/mywebapp/images/2012/" 
if(!file_exists($image_path)){ 
    mkdir($image_path, 0775); 
} 

感謝您的幫助。

回答

5

嘗試檢查實際進程所有者:

$processUser = posix_getpwuid(posix_geteuid()); 
    echo($processUser['name']); 
+0

啊......它顯示 「無人」。所以我應該對任何人都沒有幫助:[group ???] ...但我很好奇爲什麼如果用戶在配置文件中被定義爲www,流程所有者將成爲無人。另外,我如何才能在終端中找到真正的流程用戶?謝謝! – earachefl 2012-03-04 19:38:31

+0

我看到,如果我運行$ processGroup = posix_getgrgid($ processUser ['gid']); echo $ processGroup ['name'];該團體是「沒有人」......所以我現在就試試。而且,是的,它工作,我能夠mkdir()。 – earachefl 2012-03-04 19:50:51

+0

另一個問題是爲什麼使用mkdir(文件路徑,0755)指定權限與mkdir(文件路徑,0775)沒有不同之處......都在創建目錄後顯示drwxr-xr-x。 – earachefl 2012-03-04 20:01:19