2013-10-28 63 views
0

我有文件夾層次結構布加勒斯特/瀑布/ a.php。我在服務器上創建目錄的代碼片段如下:mkdir函數無法正常工作

if(!is_dir($this->folder)){ 
       $old_umask = umask(0); 
       mkdir($this->folder, 0777); 
       umask($old_umask); 
       } 
       chmod($this->folder, 0777); 

      // Moves current file to upload destination 
      if(move_uploaded_file($current['tmp_name'],$uploadFile)) 
       return true; 

所有文件都上傳到服務器。現在的問題是,父文件夾,即。布加勒斯特有權限755,而內部文件夾有權限777. $ this->文件夾的值爲布加勒斯特/瀑布。它允許布加勒斯特755許可,而瀑布777許可。根據我的代碼,777的許可也應該發給布加勒斯特。

我也試過chmod,但都是徒勞的。我想給父文件夾提供完整的權限。

+0

試試這個鏈接將失敗http://stackoverflow.com/questions/5425891/check-if -directory-exists-php – vijaykumar

回答

1

is_dir($this->folder);告訴你該文件不是一個目錄,不是它不存在。當然,如果目錄已經存在,你不能使用mkdir。

此外,如果該目錄已經存在,根據documentation如果php正在運行的用戶與擁有該目錄的用戶不同,chmod將不會執行任何操作。

+0

是的,你的是正確的,但它的路徑是布加勒斯特/瀑布,這意味着它將首先創建布加勒斯特然後瀑布。它給777權限waterFall,但它是755許可布加勒斯特 –

+0

如果布加勒斯特已經存在,代碼將不會做任何事情。另外,如果運行php的用戶與創建此文件夾的用戶不同,它將不會爲現有目錄做任何事情。 – Ashalynd

+0

是的,但如果布加勒斯特不存在,那麼它會創建布加勒斯特,並給予755權限 –

0

您正在檢查子文件夾的文件夾已經?如果是這樣,請創建父文件夾firts。

mkdir('/tmp/test1/test2/test3/test4'); 

如果 '的/ tmp/TEST1/TEST2/TEST3' 不存在

+0

不,它不會失敗,它會創建文件夾 –