5

我最近在我们的一台服务器上安装了一个 PHP 下载门户。一切正常,但用户无法上传大文件(~ 20 MB)。

我将以下设置设置为非常大的值或无限制:

memory_limit
upload_max_filesize
post_max_size
memory_limit

完整php.ini在这里: http: //pastebin.com/NrqJvMVM

但是重新启动服务器后仍然失败。

我错过了一个设置吗?我是否必须更新 Apache 配置中的任何值?公司防火墙会以某种方式干扰吗?

编辑:我检查了 phpinfo() 并且主配置仍然显示旧值。但是,配置文件 C:\Windows\php.ini 具有新值。我是否使用了错误的配置文件。

4

8 回答 8

14

您也可以在脚本中测试参数。也许这有帮助:

  1. max_execution_time = ini_set("max_execution_time", "-1");
  2. post_max_size = ini_set("post_max_size", "200M");
  3. memory_limit = ini_set("memory_limit", "200M");
  4. upload_max_filesize = ini_set("upload_max_filesize", "200M");

在 .htaccess 中:

php_value upload_max_filesize 200M

php_value memory_limit 256M

php_value max_execution_time 18000

这里有关于这个主题的好文章:http ://www.cyberciti.biz/faq/linux-unix-apache-increase-php-upload-limit/ | https://www.dokuwiki.org/faq:uploadsize

Suhosin 安装在您的服务器上还是使用 fcgi ;-)?

于 2012-08-02T13:36:06.083 回答
6

安装的所有配置设置都包含在php.ini 文件中。有时这些设置可能会被 apache .htaccess 文件中的指令覆盖,甚至被脚本本身覆盖。

以下我们需要修改的设置 -

  • 文件上传
  • 上传最大文件大小
  • 最大输入时间
  • 内存限制
  • max_execution_time
  • post_max_size

下面详细介绍配置设置。

  • upload_max_filesize 和 post_max_size

    文件通常以称为“multipart/form-data”的格式发布到网络服务器。post_max_size 设置脚本以这种方式可以接受的数据量的上限。理想情况下,此值应大于您为 upload_max_filesize 设置的值。

    重要的是要意识到 upload_max_filesize 是您上传的所有文件的大小之和。post_max_size 是 upload_max_filesize 加上表单中所有其他字段的长度加上编码器可能包含的任何 mime 标头的总和。由于这些字段通常很小,您通常可以将上传的最大大小近似为帖子的最大大小。

    根据 PHP 文档,您可以在 HTML 表单中设置 MAX_UPLOAD_LIMIT 以建议对浏览器的限制。

  • 内存限制

    当 PHP 引擎处理传入的 POST 时,它需要将一些传入的数据保存在内存中。仅当您在配置时使用了 --enable-memory-limit 选项时,此指令才有效。设置过高的值可能非常危险,因为如果同时处理多个上传,所有可用内存都将被用完,并且其他消耗大量内存的不相关脚本也可能影响整个服务器。

  • max_execution_time 和 max_input_time

    这些设置定义了脚本的最长生命周期以及脚本在接受输入时应该花费的时间。如果正在传输几兆字节的数据,则 max_input_time 应该相当高。您可以通过在脚本中调用 set_time_limit() 函数来覆盖 ini 文件中 max_input_time 的设置。

附加评论

  • 阿帕奇设置

    apache 网络服务器有一个 LimitRequestBody 配置指令,该指令限制所有 POST 数据的大小,而与使用的 Web 脚本语言无关。某些 RPM 安装将限制请求正文设置为 512Kb。您需要将其更改为更大的值或完全删除该条目。

  • 其他选项

    如果您希望在您的网站上处理大量并发文件传输,请考虑使用 perl 或 java 服务器端组件。PHP 恰好也是我们最喜欢的 Web 编程语言,但 perl 和 Java 在文件上传方面略领先。

也可以看看:

  1. 使用php上传最大100MB的大文件
  2. 使用php、apache上传大文件
  3. PHP:上传大文件失败
于 2012-08-07T06:39:40.433 回答
3

也许,这篇文章可以帮助你。您可以将参数添加到 .htaccess

于 2012-07-06T11:20:57.353 回答
2

您已经写了两次 post_max_size 变量,如果第一个值为 0,第二个值为 9999M,则删除第一个并尝试。

于 2012-07-06T11:19:14.013 回答
2

我是否使用了错误的配置文件。

好吧,phpinfo() 告诉你你正在使用哪一个。查看输出顶部附近的右侧Configuration File (php.ini) PathLoaded Configuration File

于 2012-08-04T03:23:32.980 回答
1

也许 MAX_FILE_SIZE 设置不正确......

<form enctype="multipart/form-data" action="index.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="50000" />
<input name="filedata" type="file" />
<input type="submit" value="Send file" />
</form>
于 2012-07-06T11:22:00.267 回答
1

您应该找到正确的 php.ini 文件 =)

于 2012-08-02T16:34:13.697 回答
1

我过去遇到过你的情况,我发现最好的解决方案是使用第三方库在客户端将文件拆分成块,然后将它们全部重新放在服务器上。我发现了这个:http ://www.plupload.com/

非常方便和有效。它适用于各种不同的技术,因此它可以在绝大多数客户端机器上工作。(flash, silverlight, html5 file api aso...) 干杯!

于 2012-08-09T07:49:52.343 回答