2012-09-18 85 views
-1

我的問題是關於在linux中製作一個目錄。我的網站有一個後端,我可以在該網站上傳該網站的圖片,並根據年份和月份自動創建文件夾,以在其中上傳圖片。上傳圖片時出現錯誤(php/codeigniter)

但是,從更改Web主機平臺的Windows到Linux我有錯誤,我能夠成功上傳圖像,但無法看到它時,上傳。

,如果我上傳與名​​一個圖像從我的後端(管理面板),然後它說明不了什麼,我看到的圖像在2012\09\pdf.png形式在網站的我的上傳文件夾上傳。但我想在我的/2012/09/文件夾中上傳這個文件。該文件夾是根據年份和月份自動創建的。

請爲我的php程序找到Screen Shot of error and source code (ZIP),如果您發現錯誤請幫我解決它,謝謝!

function upload() 
    { 
    $a = $this->_make_dir();  
    if(move_uploaded_file($a["tmpname"], $a["target"])) 
    { 
     echo 'success'; 
     $this->art_media->create(array("media_filename"=>$a["file"], 
      "media_date"=>time(), 
      "media_title"=>$a["file"], 
      "media_description"=>"", 
      "media_filelink"=>date("Y")."/".date("m")."/", 
      "media_isimage"=>false, 
      "media_type"=>$a["filetype"] 
      )); 

    } 
    else 
    { 
     echo 'failed'; 
    } 
} 
function _make_dir() 
{ 
    $target1 = FCPATH.$this->config->item("articles_media").date("Y"); 
    $target = $target1."\\".date("m"); 

    $uploadfile = $_FILES["Filedata"]["name"]; 
    $type = $_FILES["Filedata"]["type"]; 
    if(!is_dir($target1)) 
    { 
     mkdir($target1); 
     mkdir($target); 
    } 
    else 
    { 
     if(!is_dir($target)) 
     { 
      mkdir($target); 
     } 
    }   
    if(is_file($target."\\".$uploadfile)==true) 
    { 
     echo 'duplicate'; 
     exit(); 
     //$uploadfile = $uploadfile."_".$n; 
    } 
    return array("filetype"=>$type,"file"=>$uploadfile,"targetpath"=>$target."\\","target"=>$target."\\".$uploadfile,"tmpname"=>$_FILES['Filedata']['tmp_name']); 
} 
+0

你檢查文件夾的權限(並在 '其他' 的用戶有寫權限)? E.g parent_folder permissions = 777 – Rooneyl

+0

你可以檢查我的附件URL(mediafire)。 – Rohan

+1

這將是一個好主意,幫助我們幫助你。只要將一個帶有大量代碼的(嵌套!)ZIP文件投入到StackOverflow中根本沒有幫助。至少嘗試隔離相關代碼並將其發佈到此處。 – memowe

回答

0

Windows和Linux的工作方式不同遍歷目錄:Windows使用反斜槓而Linux使用斜槓。

您應該用正斜槓替換掉所有已轉義的反斜槓。舉例來說,這樣的:

$target = $target1."\\".date("m"); 

應該變成:

$target = $target1."/".date("m");