PHP上传文件大于2GB

时间:2013-03-12 12:51:45

标签: php apache file-upload

我有一个网站,管理员必须上传高清质量的电影。电影的大小几乎是2GB +

PHP或apache是​​否支持2GB或更高的文件上传?

最好的方法是什么?我应该使用ajax上传,swf上传(uploadify)还是普通表单提交上传?

我正在使用PHP 5.4

3 个答案:

答案 0 :(得分:1)

两个PHP配置选项控制最大上传大小:upload_max_filesizepost_max_size。对于10兆字节的文件大小,两者都可以设置为“10M”。

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

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

php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_input_time 300
php_value max_execution_time 300

最后,您可以在PHP应用程序中定义约束:

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);

PHP还提供set_time_limit()功能,因此您无需直接设置max_execution_time

在PHP代码中设置选项可能更实用,因为当您的应用程序需要大量上传时,您可以延长执行时间并增加文件大小。其他形式将恢复为默认的30秒超时和2MB限制。

答案 1 :(得分:0)

你可能需要增加Apache的conf中的最大文件上传大小,以及php.ini文件中的post_max_size和upload_max_size指令。

答案 2 :(得分:0)

如果文件> = 2GB,您可能会达到某些浏览器限制。
另外,上传2GB可能需要一些时间(可能超过网络服务器的超时)。
如果您的连接中断,则必须重新上载整个文件。