2012-11-21 111 views
3

每當我試圖通過PHP上傳一個ZIP文件,該文件大小爲0PHP:不能上傳ZIP文件

其他一切工作:7Z,RAR,PNG,XML

例如(I輸出文件大小和測試地點):

File Location: /tmp/phpKNortG/feba81fed1ff5d2c04aa0c42975eb94f.7z 
Filesize: 1284 


File Location: /tmp/phpEWrmLT/feba81fed1ff5d2c04aa0c42975eb94f.zip 
Filesize: 0 

我的形式有enctype="multipart/form-data"和文件絕對不是太大上傳。 (我還設置了內存限制爲128 MB,以確保它不是)

ini_set('memory_limit', '128M'); 
set_time_limit(0); 

$session_id = "3423840093480344"; 

mkdir('uploaded_files/' . $session_id); 

for($i = 0; $i < count($_FILES['backup_file']['name']); $i++) { 
    $file_name = $_FILES['backup_file']['name'][$i]; 
    $file_type = $_FILES['backup_file']['type'][$i]; 
    $file_error = $_FILES['backup_file']['error'][$i]; 
    $file_size = $_FILES['backup_file']['size'][$i]; 
    $file_tmp = $_FILES['backup_file']['tmp_name'][$i]; 

    print($file_name . "<br />"); 
    print($file_type . "<br />"); 
    print($file_error . "<br />"); 
    print($file_size . "<br />"); 
    print($file_tmp . "<br />"); 

    if($file_error != 0) { 
     echo "Error-Code: ".$file_error; 
     continue; 
    } 

    move_uploaded_file($file_tmp, 'uploaded_files/' . $session_id); 
} 

下面的代碼輸出這樣的:

feba81fed1ff5d2c04aa0c42975eb94f.zip 
application/zip 
0 
0 
/tmp/phpEWrmLT 

它甚至可以識別MIME類型,但文件始終爲零字節。 (甚至在用move_uploaded_file移動之前)

是否有任何服務器設置可能會阻止上傳的.zip文件?

+0

這是你的服務器?任何機會,它正在運行Suhosin? –

+0

沒有。另外我的服務器規格:Ubuntu 64位與Apache/2.2.14。我的PHP版本是:5.3.5-1ubuntu7.1 – Andre

+0

你是如何解決這個問題的?有同樣的問題! –

回答

1

memory_limit設置對文件上傳沒有影響。

您的post_max_size和upload_max_filesize的值是什麼以及.zip文件大小與這些值比較的值是多少?

+0

我已經編輯了這些。他們都是4000 MB(我真的很絕望),我已經嘗試了幾種不同尺寸的ZIP。 (從1 KB到4 MB) – Andre

+0

/tmp中有多少可用空間?此外,您嘗試上傳的.zip文件的實際大小是多少? –

+0

這不可能是問題所在。我經常上傳其他內容,並試圖在一個月內修復此錯誤。我用於測試的實際zip文件大小1.32 kb – Andre