【问题标题】:POST Content-Length exceeds the limitPOST Content-Length 超出限制
【发布时间】:2011-09-10 21:58:03
【问题描述】:

当用户上传他们的文件时,我在 php 中的 error_log 中出现了类似的错误

PHP 警告:11933650 字节的 POST 内容长度超过第 0 行未知中 8388608 字节的限制

在我的 php.ini(在 public_html 中创建的自定义 ini 文件)中,这会解决这个问题吗?我需要将它设置为 1GB 左右吗?我要在php.ini中把我的设置改成这个,能解决问题吗?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

我会将“memory_limit”限制设置为什么。

在我的脚本中检查文件上传大小是否正确也是

if($_FILES["uploadedfile"]["size"]<1000000)

【问题讨论】:

  • 你确定你编辑的是正确的 php.ini 吗?
  • 您是否编辑了正确的 php.ini(有多个)?还有什么重置设置吗? (例如,是否有任何呼叫php_ini_set?)
  • 我在 public_html 中创建了一个自定义的 php.ini 文件
  • @daza:你不能随便把 php.ini 放到任何你想要的地方。PHP 只检查某些位置,“当前目录”不是其中之一。您可以在 httpd.conf 和/或 .htaccess 文件中使用“php_value”指令来设置特定目录。但否则您必须在主 .ini 文件中更改它。使用 php_info() 查看您的“本地”设置是什么,以及正在使用哪些 .ini 文件。
  • &lt;?php phpinfo(); ?&gt; 制作一个info.php 将它复制到public_html 并在浏览器中调用它。然后检查upload_max_filesize的值是否正确。

标签: php


【解决方案1】:

如果你使用 Laravel 并使用 artisan:serve 来运行 Laravel 项目,你会在你的公共目录中创建 php.ini,然后你可以指定你的配置。

  • file_uploads = 开启
  • max_execution_time = 300
  • post_max_size = 20480M
  • upload_max_filesize = 20480M

【讨论】:

    【解决方案2】:

    我不同意,但是如果用户发送的文件大于服务器应用程序允许的大小,那么在 php.ini.htaccess 中增加文件大小的解决方案将不起作用。

    我建议在前端验证这一点。例如:

    $(document).ready(function() {
        $ ('#your_input_file_id').bind('change', function() {
            var fileSize = this.files[0].size/1024/1024;
            if (fileSize > 2) { // 2M
                alert('Your custom message for max file size exceeded');
                $('#your_input_file_id').val('');
            }
        });
    });

    【讨论】:

    • 不同意什么?
    • 验证客户端很好,但它对安全没有任何作用,只是在用户上传大文件时立即发出警告。这里的全部目标不是阻止用户上传大文件,而是允许他们上传大文件。
    • 没有服务器端解决方案/检查这个吗?我可以轻松绕过 JS 检查。
    • Nvm,想通了:if ($_SERVER["CONTENT_LENGTH"] &gt; (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
    【解决方案3】:

    尝试将其粘贴到 .htaccess 中,它应该可以工作。

    php_value post_max_size 2000M
    php_value upload_max_filesize 2500M
    php_value max_execution_time 6000000
    php_value max_input_time 6000000
    php_value memory_limit 2500M
    

    【讨论】:

    • 你能再具体一点吗?它应该在外部 IfModule 还是内部。我已将其粘贴到 IfModule 之外,它给了我服务器错误。
    【解决方案4】:

    你只是设置在 php.ini

    然后设置:

    upload_max_filesize = 1000M;
    post_max_size = 1000M;
    

    然后重新启动您的 xampp.. 查看图片

    【讨论】:

      【解决方案5】:

      我建议你应该把php.ini文件中的post_max_size从8M改为32M。

      【讨论】:

        【解决方案6】:

        如果你在使用 Wamp 的 windows 中使用 PHP 5.6.X 版本,那么文件位置可能在,

        C:\Windows\php.ini

        试试看

        post_max_size = 100M;
        

        尝试在 Apache 中进行更改。通过您的 Wamp/XAMP 加载 .ini 文件

        【讨论】:

          【解决方案7】:

          可能不止一个 php.ini 文件。例如,当使用 WAMP 时,以下目录中有 2 个 php.ini 文件:

          • C:\wamp\bin\apache\apache2.4.9\bin
          • C:\wamp\bin\php\php5.5.12

          您需要编辑第一个。

          【讨论】:

            【解决方案8】:

            post_max_size 应该略大于upload_max_filesize,因为使用 HTTP POST 方法上传时,文本还包括文件大小和名称等标题。

            如果你想成功上传1GiB文件,你必须设置:

            upload_max_filesize = 1024M
            post_max_size = 1025M
            

            注意,GB 的正确后缀是 G,即 upload_max_filesize = 1G。

            无需设置memory_limit

            【讨论】:

              【解决方案9】:

              在某些情况下,您需要增加最大执行时间。

              max_execution_time=30
              

              我做到了

              max_execution_time=600000
              

              然后我很高兴。

              【讨论】:

              • 通常您可能不想在 php.ini 中执行此操作,因为它会允许所有 php 进程运行这段时间。您可以使用 set_time_limit() 将其设置在单个文件中,例如set_time_limit(600000)
              【解决方案10】:

              8388608 字节为 8M,PHP 中的默认限制。对 php.ini 的这些更改确实应该可以解决问题(确保在完成之后重新启动 Apache 服务器)。

              这里不需要更改内存限制。

              【讨论】:

              • 确保在 .ini 文件中进行更改后重新启动服务器。
              • 如果你使用的是 nginx+php fpm 确保重启 php 守护进程sudo service php5-fpm restart
              • 重启为我做了。 +1 谢谢 ;)
              • 让我在这里发布我的经验,重启给了我一个stop: Unknown instance:,它只是创建一个新的 php5-fpm 实例但我的网络服务器仍在使用旧的,然后我不得不这样做sudo killall -KILL php5-fpm 然后sudo service php5-fpm start
              • 根据处理上传的 PHP 进程中正在执行的其他操作,可能需要将 memory_limit 增加到大于所需最大上传大小的数量。
              猜你喜欢
              • 2016-08-21
              • 1970-01-01
              • 2022-06-14
              • 2020-12-04
              • 2017-08-24
              • 2016-02-06
              • 2012-07-29
              • 2017-03-12
              相关资源
              最近更新 更多