使用php上传1GB文件

时间:2010-10-01 03:47:07

标签: php file-upload

我正在尝试使用php脚本上传1GB大小的文件,如果文件大小小于20MB,它可以正常工作,但是当我增加文件大小时,比按网站上传按钮后,它会上传文件(我猜因为它需要几分钟)之后,而不是执行upload.php,我的firefox要求我下载upload.php,所以我猜,文件正在上传,但我的PHP脚本无法执行。

此外,在谷歌搜索后,我发现了我制作的php.ini的以下设置,我的php_info()函数显示我的设置已被更改..

/ * php.ini start * /

memory_limit = 512M

post_max_size = 15000M

file_uploads = On

upload_max_filesize = 15000M

max_input_time = 20000

max_execution_time = 20000

session.gc_maxlifetime = 20000

/ * php.ini结束 * /

3 个答案:

答案 0 :(得分:7)

文件大小上传的限制受到的限制不仅仅是PHP。 PHP有其局限性,Apache有其限制,许多Web服务都有自己的限制,然后您对/ tmp目录大小有限制,可以通过共享主机上的用户权限设置。更不用说刚用完硬盘空间了!

你的php.ini看起来不错,但正如已经建议的那样 - 检查Apache中的LimitRequestBody并确保你的网络服务允许这样做。

当您需要上传非常大的文件时,一种常见的解决方案是在客户端使用Flash或Java,因为它们可以访问客户端的实际文件系统。然后,Flash / Java可以将文件分成小块,一次发送一个并在服务器端重新组装。这有很多好处。首先,您可以恢复损坏的下载。其次,您不必担心任何脚本超时。第三,它绕过了PHP,Apache,Web服务或其他来源可能存在的任何可能的文件系统限制。

答案 1 :(得分:1)

检查您的网络服务器是否也允许这么大的上传。在Apache上,设置为LimitRequestBody。这个限制是在PHP进入图片之前很久就应用的,不能在PHP中更改/覆盖。

答案 2 :(得分:0)

post_max_size = 15000M应该高于upload_max_filesize = 15000M。 它可以是post_max_size = 15001M。我已将其增加到另外 1