在LEMP(Linux CentOS,Nginx,MariaDB,PHP)服務器上,/etc/php.ini
文件具有以下內容。PHP move_uploaded_file失敗,沒有錯誤
file_uploads = on
upload_tmp_dir = /tmp
Stage1.html具有以下的標記,其用於選擇一個圖像文件,並且將圖像發佈到Stage2.php。
<form action="Stage2.php" method="post" enctype="multipart/form-data">
<input type="file" name="upload">
<input type="submit">
</form>
Stage2.php具有以下內容。
<?php
$original_name = $_FILES["upload"]["name"];
$temporary_name = $_FILES["upload"]["tmp_name"];
$target = "/var/www/html/images/" . $original_name;
if(move_uploaded_file($temporary_name, $target)) {echo "Success";}
else{echo "Failed";}
?>
正確設置原始文件,臨時文件和目標。但是,返回失敗。
加入以下Stage2.php返回0引述PHP Manual,0表示「沒有錯誤,成功上傳的文件。」
$_FILES["upload"]["error"];
將以下內容添加到Stage2.php中不會顯示任何錯誤。這導致我懷疑PHP認爲一切正常,並且問題可能是CentOS或Nginx的一些問題。這是合乎邏輯的假設嗎?
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
要進行調試,在CentOS的,我給自己定的/ tmp的權限和/ var/www/html等/圖像爲777(讀,寫,執行爲大家)。仍然沒有錯誤返回。
檢查您的max_upload_file_size –
'upload_max_filesize'爲2 MB,上傳的文件爲40 KB。 – JeremyCanfield
if(move_uploaded_file($ original_name,$ target))試一次,並檢查@JeremyCanfield – Exprator