超过1.5GB时,JQuery文件上传到NGINX/PHP服务器失败

超过1.5GB时,JQuery文件上传到NGINX/PHP服务器失败,php,jquery,file-upload,nginx,jquery-file-upload,Php,Jquery,File Upload,Nginx,Jquery File Upload,我正在使用JQuery文件上传将大文件上传到带有PHP后端的NGINX服务器。上载适用于2GB及以下的文件,但6或8GB左右的较大文件会到达末尾,但会显示以下错误消息 The uploaded file was only partially uploaded 我已经更新了我的nginx.conf: http { sendfile on; keepalive_timeout 65; server { ...

我正在使用JQuery文件上传将大文件上传到带有PHP后端的NGINX服务器。上载适用于2GB及以下的文件,但6或8GB左右的较大文件会到达末尾,但会显示以下错误消息

The uploaded file was only partially uploaded

我已经更新了我的nginx.conf:

http {
        sendfile           on;
        keepalive_timeout  65;

        server {
 ...
                client_max_body_size 20000000M;

 ...
        }
}
以及php fpm的my php.ini:

memory_limit = 512000000M

upload_max_filesize = 0 

post_max_size = 200000M

max_execution_time = 4320000

max_input_time = 4320000
在所有情况下,文件上载都需要不到一小时的时间才能完成

以下是Chrome的Inspect Element输出:


这与php.ini或jquery上传程序无关

只需密切监视您的系统资源即可接近解决方案:

  • 上传的文件保存在临时文件夹中(密切监视)
  • 您的系统RAM资源
  • 您的系统存储容量

  • 除了这些可能性之外,还要检查您的主机/环境是否会截断长POST请求(按传输的时间或数据量)

    在上载大小超过2gb的文件时,PHP 5.3中存在问题。如果我没有弄错的话,它是在PHP5.4中解决的。

    您是否尝试过使用普通表单上传文件? 例如:

    
    文件名:
    

    此外,我会尝试在本地设置nginx服务器,以缩短上传时间。如果仍然失败,您可以排除超时,甚至文件系统/磁盘问题。

    谢谢prady,服务器资源很好。我可能会尝试更改tmp文件夹,但奇怪的是,它适用于1.6GBDo timeout和keepalive_timeout设置大小的文件,从而影响较大的上载?是的,他们确实尝试将其设置为-1;)HןBen我怀疑你的php.ini设置-你能描述一下你使用的是哪台服务器吗?尝试向所有关键设置添加ini get,以确保在上载开始之前服务器遵循这些设置。还可以尝试在文件上载之前使用
    ini\u set()
    ,并取消
    session.gc\u maxlifetime
    session.cookie\u lifetime
    session.cache\u expire
    的限制。最后一件事是尝试设置一个限制为
    upload\u max\u filesize
    ,这个限制不是无限的。我使用的是带有php fpm的NGINX服务器@ShlomiHassidI已经在ini_集合中添加了('session.gc_maxlifest',9999999999);ini_集('session.cookie_life',9999999999);ini_集('session.cache_expire',9999999999);并将upload_max_filesize设置为500000000M,但会看到相同的错误。真奇怪,在开发过程中如何在不等待数小时的情况下准确测试2.0 GB文件上载?我正在服务器上运行PHP5.4.25。
    <form action="upload_file.php" method="post"
    enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="Submit">
    </form>