【问题标题】:Request Entity Too Large PHP请求实体太大 PHP
【发布时间】:2011-04-12 17:25:20
【问题描述】:

在我的一个 CakePHP 网站中,我收到了这个错误。

请求实体太大

我不知道是什么问题。我认为我通过表单发布的数据太大了。我在搜索引擎中搜索了这个,发现我必须增加post_max_size。默认情况下,我认为它设置为 8M。

但是不知道如何在 CakePHP 中增加post_max_size 以及怎么做?

谢谢。

【问题讨论】:

    标签: php apache .htaccess cakephp post


    【解决方案1】:

    post_max_sizeupload_max_filesize 是 PHP.ini 设置。您可以直接在 PHP.ini 中或通过ini_set 设置它们。我不知道这是否也可以使用一些 Cake 内部工具来设置。

    但是,错误也可能是由set limit of the RequestBodyLength in Apache 引起的(假设您在 Apache 下运行)。

    【讨论】:

    • 此外,Apache 使用HTTP_REQUEST_ENTITY_TOO_LARGE 保释的任何地方都有一个日志声明,因此应该在错误日志中描述究竟是什么冒犯了 Apache 的请求大小。
    • 是的。但是在 CakePHP 中,我必须使用 ini_set 在哪个文件中设置它?
    • @lakum 在引导文件中。但就像 Travis 在下面指出的那样,一些 ini 值不能在运行时设置。我还没有检查这是否适用于post_max_sizeupload_max_filesize
    • @TimStone 我在哪里可以看到这些日志?拥有一个 Godaddy Apache 服务器
    • @TimStone 错误信息应该是什么形式?我在 error.log 中找不到相关的错误消息
    【解决方案2】:

    我认为您需要在 PHP 配置文件 php.ini 中进行设置。如果您有 VPS / root 级别的访问权限,只需增加它的大小。如果你不(共享主机),你可以在运行时修改 php ini 参数。注意 ini_set() 在这里不起作用,因为 PHP 设置加载得太晚(文件上传后,PHP 脚本开始执行)。

    您需要在 htaccess 文件中包含以下内容(在共享主机上):

    php_value post_max_size 104857600
    

    这可能行不通。一些谷歌搜索看起来好像一些共享主机会锁定此设置,使其在 htaccess 中不可覆盖(仅在主服务器配置中)。如果是这种情况,您需要移动主机。

    【讨论】:

      【解决方案3】:

      有时在共享主机上,您可以添加自己的 php.ini 文件 - 只需从任何默认文件中复制相关位(或 google 即可)。

      这不是我以前见过的错误 - 正如 Gordon 所说,它可能是 Apache。

      不要害怕询问托管支持团队 - 我一直发现他们非常乐于助人(我认为他们一定会感到孤独),而且他们通常会为您更改配置。

      这当然不是 CakePHP 的问题。

      【讨论】:

        【解决方案4】:

        我尝试了所有这些答案,唯一对我有用的是调整 SSL 缓冲区大小。您可以通过...进行设置

        <Directory /my/blah/blah>
        ...
          # Set this to something big big...
          SSLRenegBufferSize 10486000
        ...
        </Directory>
        

        ...然后只需重启 Apache 即可生效。 (发现于:http://forum.joomla.org/viewtopic.php?p=2085574

        【讨论】:

        • 刚刚改为需要 SSL。这解决了它。
        【解决方案5】:

        “413 请求实体太大”错误的另一个可能原因是 mod-security。这就是我的原因。

        查看网站的 Apache 错误日志说:

        ModSecurity: 请求正文没有文件数据长度大于配置的限制 (131072).. 使用代码拒绝 (413)

        在我的 Ubuntu 14.04 上,配置文件在这里,但这真的取决于系统:

        /etc/modsecurity/modsecurity.conf

        SecRequestBodyNoFilesLimit 有默认值(可能还有 SecRequestBodyInMemoryLimit)。

        【讨论】:

          【解决方案6】:

          肯定不是 CakePHP 的问题,但这里是您需要设置的两个设置才能正确上传文件:

          vim /etc/php5/php.ini (or wherever the .ini is located)
          

          并设置:

          post_max_size="200M"
          upload_max_filesize="200M"
          

          如果您使用 HTTPS,现在是棘手的部分!您还需要配置一个 SSL。

          vim /etc/apache2/sites-available/<whatever>-443.conf
          

          并设置 SSLRenegBufferSize

          <Directory /appdata/www/<whatever>/web>
              Options FollowSymLinks
              AllowOverride All
              Order allow,deny
              allow from all
              SSLRenegBufferSize 201048600
          </Directory>
          

          【讨论】:

            猜你喜欢
            • 2015-10-04
            • 1970-01-01
            • 2019-03-17
            • 2012-02-12
            • 2016-11-08
            • 2014-12-30
            • 2018-10-22
            • 2014-12-23
            • 2021-12-17
            相关资源
            最近更新 更多