2017-03-31 51 views
0

我正在为我正在开发的程序制作图片上传功能,但是我似乎无法获得move_uploaded_file来移动我的文件,但我不知道为什么。PHP Move_uploaded_file不移动我的文件到目录

我收到的表单数据,我可以看到数据时,我使用的print_r函数print_r($_FILES)

我的目录结构如下所示 root->app->lib->uploadCode.phproot->app->images

我没有得到任何错误。 我在ubuntu 16.04上用php7安装了这个版本

这是我的代码。

<?php 
error_reporting(E_ALL); 
if(!empty($_FILES['newImage']['name'])) 
{ 
    $fname = $_FILES['newImage']['name']; 
    $fext = explode(".",$fname); 
    $sex = array("jpg", "jpeg", "JPG", "JPEG", "png", "PNG");//Supported extensions 
    //Check if file extension supported 
    $extRes = array_intersect($fext, $sex);//Checks to see if file uploaded extension exists in the supported extension array 
    if(count($extRes) == 1) 
    { 
     print_r($_FILES); 
     $name = $_FILES['newImage']['name']; 
     $ext = end($fext); 
     $tmp = $_FILES['newImage']['tmp_name']; 
     $path = '/../images/'; 
     $newName = uniqid().".".$ext; 
     /*if(move_uploaded_file($tmp,$path.$newName)) 
     { 
      echo "uploaded"; 
     } 
     else 
      { 
       echo "not uploaded"; 
       echo $path.$newName; 
      }*/ 

     move_uploaded_file($tmp,$path.$newName); 
    } 
    elseif(count($extRes) > 1) 
     {//More than just one file extension was found possibly something like image.png.jpg 
      echo 02; 
     } 
     else 
      {// Nothing was found so wrong file type was used 
       echo 01; 
      } 
}else 
    {//Do if no image was uploaded 
     echo 00; 
    } 

`

+0

BTW这些命令,所有的'00,01,02'是八进制;为他们使用引号。 –

回答

0

无论是从$path = '/../images/';取出开口斜线或设置的完整路径,例如例如/home/username/images/

+0

谢谢你的建议,我尝试删除开始的斜杠,只是有'../图像/'我也尝试了完整的路径,但仍然没有运气 –

+0

如果您将'$ path'设置为完整路径,然后'回声'那么你看到了什么? – Chris

+0

起初我以为它可能是一个权限问题,但我将目录设置为cmod -R 777,并且我使用chown授予非root用户权限也 –

0

这是一个许可问题。

我必须对我的www/html目录执行以下操作。

sudo chown -R username:www-data /var/www/html/ sudo chmod 775 /var/www/html/ sudo chmod g+s /var/www/html 一旦我跑,我能够上传