POST内容长度超出限制


94

当用户上传文件时,我在php的error_log中收到类似的错误

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

在我的php.ini(在public_html中创建自定义ini文件)中是否可以解决此问题,我必须将其设置为1GB左右多少?我将在php.ini中将其设置更改为此,它将解决问题吗?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

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

在我的脚本中检查文件上传大小是否小于1GB也正确吗?

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

5
您确定要编辑正确的php.ini吗?
Pekka

您是否在编辑正确的php.ini(有多个)?还有其他重置设置吗?(例如php_ini_set
打过

我在public_html中创建了一个自定义php.ini文件
daza166 2011年

@daza:您不能只将php.ini放到任何位置。PHP仅检查某些位置,“当前目录”不是其中之一。您可以在httpd.conf和/或.htaccess文件中使用'php_value'指令在特定目录中进行设置。但是否则,您必须在主.ini文件中进行更改。使用php_info()查看“本地”的设置是什么,以及正在使用的.ini文件。
Marc B

1
将info.php <?php phpinfo(); ?>复制到public_html并在浏览器中调用它。然后检查upload_max_filesize是否具有正确的值。
DanielB 2011年

Answers:


96

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

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


在.ini文件中进行更改后,请确保重新启动服务器。
Sandhu

如果您使用的是nginx + php fpm,请确保重新启动php守护进程 sudo service php5-fpm restart
Gourneau

重新启动为我做到了。+1:谢谢;)
Refilon

1
让我在这里发布我的经验,重新给了我stop: Unknown instance:,这只是创建一个新的php5-fpm的实例,但我的web服务器仍在使用旧的,然后我不得不这样做sudo killall -KILL php5-fpm,然后sudo service php5-fpm start
模因

根据处理上传的PHP流程中要执行的其他操作,可能有必要增加到memory_limit大于所需的最大上传大小的数量。
克雷格·芬奇

45

我建议您post_max_sizephp.ini文件中的8M 更改为32M 。


39

您只需在php.ini中进行设置

然后设置:

upload_max_filesize = 1000M;
post_max_size = 1000M;

然后重新启动xampp。


17

尝试将其粘贴到.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

10

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


6

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

max_execution_time=30

我做到了

max_execution_time=600000

然后我很高兴。


7
通常,您可能不想在php.ini中执行此操作,因为它将允许所有php进程在该时间内运行。您可以使用set_time_limit()将其设置在单个文件中,例如set_time_limit(600000)
billrichards 2015年

5

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

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

您需要编辑第一个。


4

我不同意,但是如果用户发送的文件大于服务器应用程序允许的大小,此增加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('');
        }
    });
});


2
不同意什么?
罗布

1
验证客户端是可以的,但是对于安全性没有任何作用,只是在用户上传大文件时立即向用户发出警告。此处的总体目的不是要阻止用户上传大文件,而是要允许他们上传大文件。
Altimus Prime

1
是否没有服务器端解决方案/对此进行检查?我可以轻松绕过JS检查。
akinuri

Nvm,弄清楚了:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri

2

如果您在使用Wamp的Windows中使用Php 5.6.X版本,则文件位置可能在其中,

C:\Windows\php.ini

只需尝试

post_max_size = 100M;

尝试在Apache之一中进行更改。这样,您的Wamp / XAMP就会加载.ini文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.