PHP上传失败(空$ _FILES)

时间:2011-01-17 15:12:14

标签: php arrays upload

我在PHP中遇到一个常见问题:当文件太大时,我的$ _FILES数组为空。

php.ini:

max_execution_time = 300000
max_input_time = 600000000
memory_limit = 5100MB
post_max_size = 5000MB
upload_max_filesize = 5000MB

文件:

Trouve.tar : 910Mo

配置值很大,但我想确保脚本有时间和内存来进行上传。

因此,授权大小大于文件大小,但我的错误与其他人相同(例如problem with uploading the images with php file upload

我是否错过了一些配置设置?

4 个答案:

答案 0 :(得分:6)

问题是 post_max_size upload_max_filesize 的大小相同,这会导致$ _FILES数组(和$ _POST)为空。如果你在post_max_size上限,$ _FILES数组将不再为空。

编辑:不知道为何投反对票。虽然它可能不适用于这种情况,但值得一提。这正是php.net所说的:http://www.php.net/manual/en/ini.core.php#ini.post-max-size

  

如果发布数据的大小更大   比post_max_size,$ _POST和   $ _FILES superglobals是空的。

答案 1 :(得分:3)

检查php.ini设置中的upload_limit

在您的html表单标记中,不要忘记输入:enctype="multipart/form-data"

答案 2 :(得分:3)

而不是MB使用M

memory_limit = 5100M

post_max_size = 5000M

upload_max_filesize = 5000M

答案 3 :(得分:1)

除了php.ini配置外,还要检查Web服务器限制。

例如,如果您使用的是Apache,则可能需要增加LimitRequestBody;如果您使用的是nginx,则可能需要增加client_max_body_size

当HTTP请求大于Web服务器接受的限制时,它会返回状态为:413 Request Entity Too Large的HTTP响应。