2017-06-08 22 views
0

我在Ubuntu Linux上使用PHP 5和Codeigniter 3。目錄已創建,但不存在於本地服務器上 - PHP

我需要上傳和存儲服務器上的用戶文件,但在上傳之前,我需要爲將要存儲文件的用戶創建目錄。 目錄名稱基於用md5散列的userdata。

另外我檢查目錄是否已經創建/存在於服務器上,否則應該創建。

public function uploadImage(){ 

     $id = $this->session->userdata('id'); 

     $dir_name = md5($id); // create hashed dir name 

     $user_dir = base_url() . 'uploads/user' . '/' . $dir_name; 

     // print_r($user_dir); 

     if(!file_exists($user_dir)){ 
      mkdir($user_dir, 0777); 
      print_r("created"); 
     }else{ 
      print_r("directory exists"); 
     } 
} 

當我運行代碼時,它說創建,但我不能看到目錄。它不存在於uploads/users文件夾中。 請幫我,我在哪裏錯了。非常感謝

+0

可能https://stackoverflow.com/questions/6449386/base-url-function-not-working-in-codeigniter重複 – pokeybit

+0

這可能是因爲你正在嘗試在apache沒有寫入權限的文件夾內創建一個文件夾。即使mkdir沒有成功並且沒有任何指示,print_r語句也會到達。 – Rimble

+0

如果目錄不存在,您將打印「已創建」。這與創建成功後創建的「創建」不同。 'var_dump(mkdir(User_dir,0777));'我打賭你錯了。 – mkaatman

回答

0

使用FCPATH

public function uploadImage(){ 

    $id = $this->session->userdata('id'); 

    $dir_name = md5($id); // create hashed dir name 

    /* 
     You may need/after FCPATH 

     $user_dir = FCPATH . '/uploads/user/' . $dir_name; 
    */ 

    $user_dir = FCPATH . 'uploads/user/' . $dir_name; 

    // print_r($user_dir); 

    if(!file_exists($user_dir)){ 

     mkdir($user_dir, 0777); 

     // @mkdir($user_dir, 0777, true); 

     print_r("created"); 

    } else { 

     print_r("directory exists"); 
    } 
} 
+0

謝謝先生,完美的作品。 –

相關問題