2012-03-29 117 views
0

由於幾天後我的Plesk服務器將不再與PHP文件上傳協作,原因不明。PHP上傳全部失敗

測試是用1.8 MB的mp3文件和更小的電影文件完成的。

我試圖通過這個問題來調試我的方式..

的upload_max_filesize = 100M

的post_max_size = 128M

open_basedir的是關閉或設置爲兩個目錄,其中之一是的/ tmp/

upload_tmp_dir =/TMP memory_limit的= 4096M(由於其他原因,這是額外的高設置)

/tmp目錄就這樣產生了:

drwxrwxrwx 4 root root 200 Mar 29 14:09 tmp 

Linux版本的2.6.32-5-AMD64(Debian的2.6.32-35)([email protected])(gcc版本4.3.5(Debian的4.3.5- 4))#1 SMP週二6月14日09:42:28 UTC 2011

我的表單使用多部分/表單數據,所以這是解決,雖然我還測試了兩個不同的ajax上傳腳本 - 這兩個通常工作正好。

我不會收到任何錯誤消息。我所知道的是上傳後tmp文件不存在。就是這樣。

有人知道這裏發生了什麼嗎?

謝謝!

+0

服務器上剩餘多少磁盤空間?/tmp可能隨時被清除。 – devsnd 2012-03-29 12:15:19

+0

主磁盤使用率爲29%。但是,我發現:Filesystem「overflow」掛載在/ tmp(這是什麼意思?) – SquareCat 2012-03-29 12:17:03

回答

1

正如您的寶貴意見表示你有overflow安裝在頂部/tmp。這種行爲實際上表明,/ tmp已滿,因爲如果/ tmp已滿,腳本/etc/init.d/mountoverflowtmp將自動創建大小爲1mb的RAM磁盤。所以,我建議umount overflow,然後清理你的/tmp

1

我在代碼的某處訪問$ _FILE數組以獲取上傳的文件。

試試這個:

print_r($_FILES); 

如果問題是PHP相關的,你會看到 「錯誤代碼」 中設置。

這裏是一個錯誤代碼解釋: http://php.net/manual/en/features.file-upload.errors.php

這可以幫助您確定問題

+0

謝謝,它是錯誤號7 - UPLOAD_ERR_CANT_WRITE – SquareCat 2012-03-29 12:24:30

0

「我所知道的是,tmp文件不存在上載後,而且 就是這樣。」

您的意思是說,在運行腳本之後您正在手動查找它?如果是這樣,那是預期的行爲。該文件暫時存儲在$ _FILES ['postVariableName'] ['tmp_name']中,並且將在腳本的末尾被刪除,除非您先做文件。

$localFilePath='/some/file/path.txt'; 
if(move_uploaded_file($_FILES['postVariableName']['tmp_name'], $localFilePath)){ 
    //Successfully moved the file 
} 
else{ 
    //Unable to move file 
    echo'Could not move file'; 
}