$ _FILES在大文件上失败

时间:2012-11-19 11:05:32

标签: php

我有一个小的uploadscript,适用于正常大小的图像和文件。

    function uploadimage($name,$dir)
{
    if($name['error'] > 0){
    die('An error ocurred when uploading.');
    }

    if(!getimagesize($name['tmp_name'])){
        die('Please ensure you are uploading an image.');
    }

    // Check filetype
    if($name['type'] != 'image/png'){
        die('Unsupported filetype uploaded.');
    }

    // Check filesize
    if($name['size'] > 500000){
        die('File uploaded exceeds maximum upload size.');
    }

    // Check if the file exists
    if(file_exists($dir. $name['name'])){
        die('File with that name already exists.');
    }

    // Upload file
    if(!move_uploaded_file($name['tmp_name'], $dir. $name['name'])){
        die('Error uploading file - check destination is writeable.');
    }

    return $dir. $name['name'];
    die('File uploaded successfully.');
}

$ name是$ _FILES ['WHATEVER']和$ dir the dir。那么现在我只是更改了几行来上传.csv文件。到现在为止还挺好。它正在使用很少的.csv文件。但是当我尝试更大的(20MB +)时,我发布时没有任何反应。我检查了我的php.ini上传upload_max_filesize和memory_limit,两者都是128M ......有人可以给我一个指针,我应该搜索bug吗?

7 个答案:

答案 0 :(得分:3)

两个PHP配置选项控制最大上传大小: upload_max_filesize post_max_size

但是,您还需要考虑完成上传所需的时间。 PHP脚本通常会在30秒后超时,但10MB文件在健康的宽带连接上上传至少需要3分钟(请记住,上传速度通常比下载速度慢5倍)。此外,操纵或保存上载的图像也可能导致脚本超时。因此,我们需要将PHP的 max_input_time max_execution_time 设置为300(以秒为单位指定5分钟)。

可以在服务器的 php.ini 配置文件中设置这些选项,以便它们适用于所有应用程序。或者,如果您使用的是Apache,则可以在应用程序的.htaccess文件中配置设置:

答案 1 :(得分:2)

同时查看post_max_size

答案 2 :(得分:0)

您必须在php.ini文件中使用此设置

upload_max_filesize = 10M  //20m,30m etc..
post_max_size = 10M  //20m,30m etc..

没有必要提供10 MB,它将根据您的要求给出。

试试这个。

答案 3 :(得分:0)

你在php.ini中检查了post_max_size吗?

答案 4 :(得分:0)

你必须改变php.ini文件。它限制了最大上传大小。在php.ini文件中更改此内容

post_max_size = 8M
upload_max_filesize = 2M

:)

答案 5 :(得分:0)

PHP在内存中上传might take the whole request以便工作,因此上传数百个meg将需要内存限制,允许存储许多megs(以及更多)。如果您确实需要支持大文件上传,那么如果Web服务器根据请求创建临时文件,您可能会感觉更好。请查看mod_upload获取apache,或HttpUpload插件获取nginx。

答案 6 :(得分:-1)

PHP ini settings是您需要关注的内容。