某些输入后断开multipart / form-data的PHP POST请求

时间:2016-01-04 21:01:15

标签: php forms http-post multipartform-data

我的网络服务器上突然出现一个奇怪的问题。我将表单发布到PHP并且有一定数量的输入,$ _POST数组为空,似乎输入流未完全读取。

<?php

var_dump(file_get_contents("php://input"));

print_r($_POST);

?>
<html>
<body>
<form action="form.php" method="POST" enctype="multipart/form-data">
<input type="text" name="blub" value="12345">
<input type="text" name="foo"  value="abc">

<input type="text" name="blub1" value="12345">
<input type="text" name="foo1"  value="abc">

<input type="text" name="blub2" value="12345">
<input type="text" name="foo2"  value="abc">

<input type="text" name="blub3" value="12345">
<input type="text" name="foo3"  value="abc">

<input type="text" name="blub4" value="12345">
<input type="text" name="foo4"  value="abc">

<input type="text" name="blub5" value="12345">
<input type="text" name="foo5"  value="abc">

<input type="text" name="blub6" value="12345">
<input type="text" name="foo6"  value="abc">


<input type="submit">
</form>

<form action="form.php" method="POST" enctype="multipart/form-data">
<input type="text" name="blub" value="12345">
<input type="text" name="foo"  value="abc">

<input type="text" name="blub1" value="12345">
<input type="text" name="foo1"  value="abc">

<input type="text" name="blub2" value="12345">
<input type="text" name="foo2"  value="abc">

<input type="text" name="blub3" value="12345">
<input type="text" name="foo3"  value="abc">

<input type="text" name="blub4" value="12345">
<input type="text" name="foo4"  value="abc">

<input type="text" name="blub5" value="12345">
<input type="text" name="foo5"  value="abc">

<input type="text" name="blub6" value="12345">
<input type="text" name="foo6"  value="abc">

<input type="text" name="blub7" value="12345">
<input type="text" name="foo7"  value="abc">


<input type="submit">
</form>


</body>
</html>

第一种形式正常工作,第二种形式打破了以下输出:

string(118) "daryIaQvu0q5CBO86f9U Content-Disposition: form-data; name="foo7" abc ------WebKitFormBoundaryIaQvu0q5CBO86f9U-- " Array ( )

我不知道代码有任何变化,因此可能会发生一些PHP更新或类似的更新。

我检查了很多设置,phpinfo设置如下:

Directive   Local Value Master Value
always_populate_raw_post_data   Off Off
auto_append_file    no value    no value
auto_prepend_file   no value    no value
enable_post_data_reading    On  On
file_uploads    On  On
max_execution_time  60  60
max_file_uploads    20  20
max_input_nesting_level 200 200
max_input_time  60  60
max_input_vars  1000    1000
memory_limit    128M    128M
output_buffering    4096    4096
output_handler  no value    no value
post_max_size   128M    128M
upload_max_filesize 128M    128M
variables_order GPCS    GPCS

有什么建议要检查吗?似乎只能读取固定数量的输入流,因为更改提交值的长度会更改输入流的截断部分。

2 个答案:

答案 0 :(得分:0)

string(118) "daryIaQvu0q5CBO86f9U Content-Disposition: form-data; name="foo7" abc ------WebKitFormBoundaryIaQvu0q5CBO86f9U-- " Array ( )

这是问题所在。看看你的报价,有些正在结束,有些则没有。引号内有引号?!?

答案 1 :(得分:0)

我无法弄清楚问题是什么。将站点移动到新服务器可以解决问题。谢谢,对不起,我无法发布真正的解决方案。