如何防止大型Apache/PHP文件上载失败?

如何防止大型Apache/PHP文件上载失败?,php,apache,memory-management,file-upload,large-files,Php,Apache,Memory Management,File Upload,Large Files,我最近在我们的一台服务器上安装了一个PHP下载门户。一切正常,但用户无法上传大文件(约20 MB) 我将以下设置设置为极大值或无限值: memory_limit upload_max_filesize post_max_size memory_limit 完整php.ini此处: 但重新启动服务器后仍会失败 我是不是错过了一个场景?我必须更新Apache配置中的任何值吗?公司防火墙是否会以某种方式干扰这一点 编辑:我选中了phpinfo(),主配置仍然显示旧值。但是,配置文件C:\Window

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

我将以下设置设置为极大值或无限值:

memory_limit
upload_max_filesize
post_max_size
memory_limit
完整
php.ini
此处:

但重新启动服务器后仍会失败

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


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

您已经编写了两次post_max_size变量,其中第一个变量的值为0,第二个变量的值为9999米,请删除第一个变量并重试。

也许,本文可以帮到您。您可以将参数添加到.htaccess

可能最大文件大小未正确设置

<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>

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

  • max_execution_time=ini_集(“max_execution_time”,“-1”)
  • post_max_size=ini_集合(“post_max_size”,“200M”)
  • 内存限制=初始设置(“内存限制”,“200M”)
  • upload_max_filesize=ini_集(“upload_max_filesize”,“200M”) 在.htaccess中:

    php\u值上传\u最大\u文件大小为200M

    php_值内存_限制256M

    php_值最大执行时间18000

    以下是关于这个话题的好文章:|


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

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

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


    phpinfo()会告诉您使用的是哪一个。查看
    配置文件(php.ini)路径
    加载的配置文件
    就在输出顶部附近

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

    下面是我们需要修改的设置-

    • 文件上传
    • 上载\u最大\u文件大小
    • 最大输入时间
    • 内存限制
    • 最大执行时间
    • 贴纸最大尺寸
    下面将详细介绍配置设置

    • 上传最大文件大小和发布最大文件大小

      文件通常以称为“多部分/表单数据”的格式发布到Web服务器。post_max_size设置了脚本可以以这种方式接受的数据量的上限。理想情况下,此值应大于为upload\u max\u filesize设置的值

      必须认识到upload_max_filesize是您正在上载的所有文件的大小之和。post_max_size是upload_max_filesize加上表单中所有其他字段的长度加上编码器可能包含的任何mime头的总和。由于这些字段通常很小,您通常可以将上载最大大小近似为发布最大大小

      根据PHP文档,您可以在HTML表单中设置MAX_UPLOAD_限制,以向浏览器建议限制

    • 内存限制

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

    • 最大执行时间和最大输入时间

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

    附加评论

    • Apache设置

      ApacheWebServer有一个LimitRequestBody配置指令,该指令限制所有POST数据的大小,而不考虑所使用的web脚本语言。一些RPM安装将请求正文设置为512Kb。您需要将其更改为更大的值,或者完全删除该条目

    • 其他选择

      <>如果你希望处理大量的并发文件传输,请考虑使用Perl或java服务器端组件。PHP恰好也是我们最喜欢的web编程语言,但perl和Java在文件上传方面只是稍微领先一点

    另见:


  • 我在过去遇到过您的情况,我找到的最佳解决方案是使用第三方库在客户端将文件分割成块,然后将它们重新放回服务器上。 我发现:

    非常方便和有效。它与各种不同的技术配合使用,因此它可以在大多数客户机上工作。(flash、silverlight、html5文件api aso…)
    干杯

    谢谢,但我相信我已经设置好了所有这些设置。当我在处理大量上传时,我发现这个小程序也可以使用php。也许这对你的项目有好处。下载门户已经在其他服务器上运行,所以我认为问题不是由代码本身造成的。尝试过,但没有帮助。为什么你要将这些变量的值增加这么多,只是根据需要设置它们,仅此而已。唯一真正巨大的价值是文件上传大小(9999 MB)。我需要一个无限的上传大小,但9999 MB就足够了。我可以知道你允许用户上传什么吗。亲密的客户可以使用它来上传无法通过电子邮件传输的文件,因为这些文件太大或者