POST Content-Length 超出限制

Posted

技术标签:

【中文标题】POST Content-Length 超出限制【英文标题】:POST Content-Length exceeds the limit 【发布时间】: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的值是否正确。 【参考方案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 增加到大于所需最大上传大小的数量。

以上是关于POST Content-Length 超出限制的主要内容,如果未能解决你的问题,请参考以下文章

POST Content-Length of 51110424 bytes 超出了 Unknown on line 0 中 41943040 字节的限制

如何修复 * bytes 的 Content-Length 超过 * bytes 的限制

如何防止警告:POST Content-Length 和内存大小

如何防止警告:POST Content-Length 和内存大小

如何防止警告:POST Content-Length 和内存大小

如何防止警告:POST Content-Length 和内存大小