2017-01-25 33 views
0

我有一個php文件設置,用於通過AWS將圖像上傳到Amazon服務器。我遇到了一個錯誤信息,這個信息奇怪地顯示在我的prod服務器(亞馬遜服務器)上,但不是我的開發服務器(只是一個普通的php服務器)。亞馬遜服務器之前曾經出現過錯誤,當某些東西的結構完全不符合要求時。例如,如果一個標籤有一個href /home它將導致一個錯誤頁面,除非我將標籤更改爲/home/php - 將上傳的文件評估爲false

無論如何,我已經在我的PHP腳本中縮小了錯誤所在,並且我的php函數move_uploaded_file正在評估爲false並停止從開始上傳到Amazon s3的文件(在此階段該文件位於服務器上該網站託管,但尚未在S3)。下面是與上述已申報一些變量應該評估爲真我的if語句:

$target_dir = "../uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],$target_file)) { 
    //upload to s3 
} else { 
    //error 
} 

我插入的if語句上面下面的代碼,看看它吐出這裏就是它在其下評論評價:

echo json_encode($target_file); 
//  "..\/uploads\/Grad.jpeg" 

    echo $_FILES["fileToUpload"]["tmp_name"]; 
    // /tmp/phpQA1667 

    echo json_encode(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],$target_file)); 
    // false 

我不是PHP的專家,似乎無法把我的發現者放在爲什麼它評估爲false。任何人都可以看到我出錯了嗎?如果文件名不是一個有效的上傳文件,那麼不會發生動作,和move_uploaded_file()以將返回FALSE

+0

被發現的文件移動,你檢查了? – JustOnUnderMillions

+0

也許你不能去../uploads/?你可以回顯__DIR__;以顯示你目前的絕對路徑,然後你必須看看你是否真的有../上傳。 如果路徑是正確的,我會檢查文件夾的權利 –

+0

抱歉,但回聲DIR;只回應出一個說DIR的字符串。不知道如果我正確地做到這一點? –

回答

0

move_uploaded_file在兩種情況下返回false。

如果文件名是有效的上傳文件,但由於某種原因無法移動,則不會執行任何操作,並且move_uploaded_file()將返回FALSE。此外,還會發出警告。

無論採用哪種方法,您都應該在$ _FILES超全局中找回錯誤。

執行print_r($ _ FILES)並查看它給您的任何錯誤消息,以及數組是否被填充。

一旦發現該錯誤,應該很容易確定問題的確切原因。

的錯誤的完整列表可在http://php.net/manual/en/features.file-upload.errors.php