4GB HTTP文件上传使用jQuery,文件上传,Apache和PHP [英] 4GB HTTP File Uploads Using jQuery-File-Upload, Apache and PHP

查看:255
本文介绍了4GB HTTP文件上传使用jQuery,文件上传,Apache和PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此问题似乎直接关系到臭名昭著的2GB限制,我不知道在这个ATGE如果一个32位的PHP问题。
我已经看到了HTTP不被设计为如此大的文件相关的意见。
不过,我宁愿决定哪些已经被证明工作至今任何根本性变化之前用尽这个方向发展。
正如标题建议我需要上传> 2GB的文件,迄今为止规模最大3.8GB。
我有使用jQuery文件上传已经没有任何问题发送任何文件(均不< 2GB)形式建造开始之前,这些大的。
在3.8GB 1花费也许5分钟,以从文件的上传载和进度条完成对100%。
但上传后报告的错误是1型这表明文件大小限制已经突破。

This problem seems directly related to the infamous 2GB limit and I'm not sure at this atge if its a 32bit PHP issue. I've seen the comments related to HTTP not being designed for such large files. However, I would rather exhaust this direction before deciding on any fundamental change to what has been proven to work so far. As the title suggest I need to upload >2GB files, largest so far 3.8GB. I have a form built using jQuery-file-upload which has had no problems sending any files (all less <2GB) until these large ones started. The 3.8GB one takes maybe 5 minutes to upload from File-Upload and the progress bar completes to 100%. However the reported error after upload is a type 1 which suggests the file size limit has been breached.

如果我在上传过程中监视服务器上的磁盘使用情况就会产生下面的示例属性:
载之前磁盘是用于30%,作为上载继续这一使用率增加,31%,32%.... 45%,46%等。
然而,在围绕2GB点的磁盘使用率降回30%,而客户端/浏览器的文件上传继续。
当服务器磁盘使用停止增加客户端可能只在上载的60%。
然而,客户端仍然继续100%,但没有被服务器接受作为磁盘状态从未移开30%。

If I monitor the disk usage on the server during upload it will have the following sample properties: Before upload the disk is 30% used, as the upload continues this usage increases, 31%,32%....45%,46%etc. However at around the 2GB point the disk usage drops back to 30% while the client/browser File-Upload continues. When the servers disk usage stops increasing the client may only be at 60% of the upload. Yet the client still continues to 100% but isn't being accepted by the server as the disk status never moves off 30%.

我运行64位的Ubuntu(最新)与Apache / 2.2.22(Ubuntu的)和PHP版本5.3.10-1ubuntu3.2
经过多天的上下车寻找一个解决方案,我仍然不能得到3.8GB文件,以改变许多设置后上传。
我将列出排序以下,但在这个阶段,我认为它可能是一个32位的PHP问题的变化,所以如果任何人都可以提出一个链接值得仿效或解决方案值得尝试我最好的AP preciate它。

I'm running 64Bit Ubuntu (latest) with Apache/2.2.22 (Ubuntu) and PHP Version 5.3.10-1ubuntu3.2 After many days on and off searching for a solution I still cannot get the 3.8GB file to upload after changing so many settings. I'll list the sort of changes below but at this stage I think it may be a 32bit PHP issue so if anyone can suggest a link worth following or solution worth trying I'd appreciate it.

在我的Apache2已经设置如下:

In Apache2 I've set the following:

- apache2.conf I've set Timeout to 900
- httpd.conf I've set LimitRequestBody to 0
- .htaccess in the file upload directory I've set:
    - LimitRequestBody to 4939212390
    - php_value upload_max_filesize 4831838208
    - php_value post_max_size 4939212390

在php.ini中我已经设置了以下内容:

In php.ini I've set the following:

- UPLOAD_MAX_FILESIZE 4831838208
- POST_MAX_SIZE 4939212390
- max_execution_time 120
- max_input_time 60
- memory_limit 128M

如果我在服务器上运行下面这似乎在PHP没有一个32位的问题,但我不知道在这个阶段。

If I run the following on the server it would seem the PHP does not have a 32bit issue but I'm not sure at this stage.

php -r "echo PHP_INT_MAX;"
9223372036854775807

正如我所提到的任何想法将不胜AP preciated。

As I mentioned any ideas would be greatly appreciated.

更新:

已经解决了这个问题,所以拜@BogdanBurim提出了这个回归基本的方法:

Have solved this issue, so thanks to @BogdanBurim for suggesting the back to basics approach:

我已成功上传通过HTTP 3.8 GB的文件有以下设置:

I have managed to upload a 3.8 GB file over HTTP with the following settings:

在我的Apache2已经设置如下:

In Apache2 I've set the following:

- apache2.conf I've set Timeout to 900
- httpd.conf I've set LimitRequestBody to 0
- .htaccess in the file upload directory I've set:
    - LimitRequestBody to 0
    - php_value upload_max_filesize 0
    - php_value post_max_size 4939212390
- .htaccess in the php temp directory (in my case its /tmp/) I've set:
    - LimitRequestBody to 0
    - php_value upload_max_filesize 0
    - php_value post_max_size 4939212390

在php.ini中我已经设置了以下内容:

In php.ini I've set the following:

- UPLOAD_MAX_FILESIZE 0
- POST_MAX_SIZE 4939212390
- max_execution_time 120
- max_input_time 60
- memory_limit 128M

该解决方案的唯一重要的部分是不必删除MAX_FILE_SIZE,从上传的HTML表单:

The only other important part of this solution was having to remove the MAX_FILE_SIZE, HTML from the upload form:

<input type="hidden" name="MAX_FILE_SIZE" value="4939212390" />

有了这套不断引起了PHP类型2的错误,所以PHP无法处理大于32位整数设置。
删除它造成PHP 1型错误,直到我改变了的upload_max_filesize 0无处不在,哎preSTO现在它工作!!!!

Having this set continually caused a PHP type 2 error, so php couldn't handle the greater than 32bit integer that is set. Removing it caused PHP type 1 errors until I changed the UPLOAD_MAX_FILESIZE to 0 everywhere and hey presto it now works!!!!

<一个href=\"http://php.net/manual/en/features.file-upload.errors.php\">http://php.net/manual/en/features.file-upload.errors.php

推荐答案

已经解决了这个问题,所以拜@BogdanBurim提出了这个回归基本的方法:

Have solved this issue, so thanks to @BogdanBurim for suggesting the back to basics approach:

我已成功上传通过HTTP 3.8 GB的文件有以下设置:

I have managed to upload a 3.8 GB file over HTTP with the following settings:

在我的Apache2已经设置如下:

In Apache2 I've set the following:

- apache2.conf I've set Timeout to 900
- httpd.conf I've set LimitRequestBody to 0
- .htaccess in the file upload directory I've set:
    - LimitRequestBody to 0
    - php_value upload_max_filesize 0
    - php_value post_max_size 4939212390
- .htaccess in the php temp directory (in my case its /tmp/) I've set:
    - LimitRequestBody to 0
    - php_value upload_max_filesize 0
    - php_value post_max_size 4939212390

在php.ini中我已经设置了以下内容:

In php.ini I've set the following:

- UPLOAD_MAX_FILESIZE 0
- POST_MAX_SIZE 4939212390
- max_execution_time 120
- max_input_time 60
- memory_limit 128M

该解决方案的唯一重要的部分是不必删除MAX_FILE_SIZE,从上传的HTML表单:

The only other important part of this solution was having to remove the MAX_FILE_SIZE, HTML from the upload form:

<input type="hidden" name="MAX_FILE_SIZE" value="4939212390" />

有了这套不断引起了PHP类型2的错误,所以PHP无法处理大于32位整数设置。
删除它造成PHP 1型错误,直到我改变了的upload_max_filesize 0无处不在,哎preSTO现在它工作!!!!

Having this set continually caused a PHP type 2 error, so php couldn't handle the greater than 32bit integer that is set. Removing it caused PHP type 1 errors until I changed the UPLOAD_MAX_FILESIZE to 0 everywhere and hey presto it now works!!!!

<一个href=\"http://php.net/manual/en/features.file-upload.errors.php\">http://php.net/manual/en/features.file-upload.errors.php

这篇关于4GB HTTP文件上传使用jQuery,文件上传,Apache和PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆