2012-11-21 48 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