2012-09-18 67 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");