2016-11-20 43 views
1

我已經成功在Linode上安裝了帶有LAMP的ubuntu。在此之前,我的所有網站都託管在godaddy上。一切工作正常以及與XAMPP本地主機。在Ubuntu 16.04上設置LAMP後,Php未能看到正在上傳的文件LTS

但是,用這個新的服務器@Linode;在我將所有的PHP文件上傳到服務器後,開始上傳產品後,

mysql已插入,但我的abc.com/img文件夾爲空!

require "../db/order.php"; 
$order=new order(); 

$allowed=['image/jpeg','image/png','image/gif']; 

if(empty($_FILES['photos']['name'][0])){ 

    echo "<h1>plz select photos</h1>"; 

}else{ 

    foreach ($_FILES['photos']['type'] as $abc){ 

     if(!in_array($abc,$allowed)){ 
      echo ' 
      <div style=" margin: auto; 
       width: 60%; 
       border: 1px solid #ff0000; 
       padding: 10px;"> 
      ';   

      echo '<p><a href="upload_picture.php">back to upload</a></p>'; 
      echo '</div>'; 

      $check=false; 
     }else{ 
      $check=true; 
     } 
    } 

    if($check==true){ 

     $path = "../../img/"; 
     for($i=0;$i<count($_FILES['photos']['name']);$i++){ 
      move_uploaded_file($_FILES['photos']['tmp_name'][$i],iconv("utf-8", "cp936", $path.$_FILES['photos']['name'][$i])); 
      $img_name[]=$_FILES['photos']['name'][$i]; 
     } 

     $order->add_img($img_name); 

    } 
} 

的php.ini

我從

;upload_tmp_dir 

改爲

upload_tmp_dir =/tmp 

但它仍然無法正常工作。任何人都可以幫忙

+0

您的網絡服務器帳戶可以訪問/訪問'/ tmp' – RiggsFolly

+0

@RiggsFolly是的!我可以使用FTP以root身份查看它 – gosulove

+0

Web服務器不應該使用'root'帳戶運行! – RiggsFolly

回答

1

有幾個原因可能導致您的文件無法上傳。

首先,我建議在move_uploaded_file()之前使用is_uploaded_file()來查看您的文件是否確實到達服務器。

if (is_uploaded_file($_FILES['photos']['tmp_name'][$i])) { 
    // move the file 
} else { 
    echo 'file not uploaded'; 
} 

你在你的HTML表單標籤上有enctype="multipart/form-data"嗎?

是在php.ini中是file_uploads = On

upload_max_filesize怎麼樣?

+0

我認爲我的PHP編碼沒有錯?如果編碼有問題,它在Localhost + Godaddy託管中不起作用。我認爲這與我的VPS設置或相關 – gosulove

+0

是的,我同意。看起來問題可能是由於服務器配置。 'file_uploads'和'upload_max_filesize'都是php.ini文件中的PHP配置。看看這些設置 - 他們是一個可能的原因。 – ghatzhat

+0

如果您使用的是PHP7(並且您的配置是Ubuntu 16的默認設置),那麼您會在/etc/php/7.0/apache2/php.ini – ghatzhat