40

嗨,我对 PHP 很陌生,我已经为要上传到我的服务器的非常大的 csv 文件创建了一个表单。有人向我提到,由于上传文件太大,浏览器会超时,这是真的吗?如果是这样,可以预防吗?

谢谢你的帮助!

4

10 回答 10

64

您需要以下 php.ini 设置的正确值:

  1. max_input_time不是max_execution_time!)
  2. 上传最大文件大小
  3. post_max_size

有可能

  1. 内存限制
于 2009-02-23T16:17:10.837 回答
31

如果它们的值太小,有一些配置指令可能会导致大型上传失败:

PHP

  • max_input_time   允许脚本解析输入数据(如 POST、GET 和文件上传)的最长时间(以秒为单位)
  • upload_max_filesize   上传文件的最大大小。
  • post_max_size   允许的帖子数据的最大大小。

阿帕奇

  • TimeOut   服务器在请求失败之前等待某些事件的时间
  • LimitRequestBody   限制从客户端发送的 HTTP 请求正文的总大小

可能还有更多。

于 2009-02-23T16:19:25.730 回答
6

解决 php 中对大文件上传处理不当的一个好方法是使用像JUpload这样的上传器,它会在发送文件之前将文件分成块。这也有利于您的用户在上传时获得适当的进度反馈,并且他们可以一次上传多个文件。

于 2009-02-23T16:24:18.323 回答
4

我可以使用以下设置解决此问题,您可以使用不同的值,但您明白了:

对于我的服务器,我将这些行放在脚本目录内的“.user.ini”文件中,您的服务器可能会寻找不同的文件,如果您在服务器上执行 phpinfo('user_ini.filename') 它将吐出您需要将值放入的文件

max_execution_time = 1800
max_input_time = -1
post_max_size = 100M
upload_max_filesize = 100M
memory_limit = 256M
于 2013-05-13T16:01:07.573 回答
3

上传非常大的文件时,您必须更改 4 个配置变量:

  • upload_max_filesize
  • post_max_size
  • memory_limit
  • time_limit

使用 set_time_limit() 可以在运行时增加时间限制。

于 2009-02-23T16:20:48.630 回答
2

默认情况下,允许脚本运行 30 秒。您可以使用set_time_limit() 函数来改变它。此外,如果您的用户需要上传大文件,您需要更改 php.ini 文件中的 post_max_size 和/或 upload_max_filesize 值。

此外,如果您只想全局扩展超时限制,您可以在 php.ini 中更改 max-execution-time。

于 2009-02-23T16:13:19.537 回答
1

是的,它是真实的。文件上传是通过 POST 请求完成的,请求通常会超时。您应该能够重新配置您的环境以获得更长的请求超时。

于 2009-02-23T16:12:23.657 回答
1

不仅仅是超时会导致问题。可以上传的文件的最大大小有一些限制。这些限制可以在 php.ini 文件中更改:

post_max_size
upload_max_filesize memory_limit

查看http://uk.php.net/ini.core了解详情。

于 2009-02-23T16:17:19.823 回答
1

我的回答与您的原始问题没有直接关系,但是如果您的 PHP 脚本前面有反向代理负载均衡器,负载均衡器可能会超时或阻止大量上传。如果您支持文件上传,请务必检查负载均衡器的配置。就像 PHP 一样,大多数负载均衡器的默认上传设置都非常小。

于 2009-03-29T14:29:54.540 回答
0

如果更改上述任何参数似乎没有任何区别,则可能是某处的 html 表单包含名称 MAX_FILE_SIZE 作为隐藏字段。

<input type="hidden" name="MAX_FILE_SIZE" value="10000000">

在上面的例子中,任何超过 10MB 的文件都不会被上传。

于 2017-02-25T19:46:37.450 回答