如果长度> 1000000个字符,则未设置$ _POST键/值

时间:2019-06-17 14:35:09

标签: php

这是我$Data = [ "Something" => "1", "SomethingElse" => "2", "More" => "3", "Exactly1000000" => substr(file_get_contents("Data2MB.txt"), 0, 1000000), "Exactly1000001" => substr(file_get_contents("Data2MB.txt"), 0, 1000001), "About2MB" => file_get_contents("Data2MB.txt"), ]; 正在PHP脚本中的一些数据。

cURL

已使用GuzzleXMLHttpRequest(不使用cURL)并通过<?php print_r($_POST); ?> 完成了此操作。两者产生相同的结果。

发布到:

Array
(
    [Something] => 1
    [SomethingElse] => 2
    [More] => 3
    [Exactly1000000] => Z0vp2++85+y9wjFL... (very long random base64)
)

输出:

file_get_contents("php://input")

任何字符串值> 1000000个字符实际上都会消失,但是如果目标脚本显示max_execution_time 500 max_file_uploads 20 max_input_nesting_level 64 max_input_time 500 max_input_vars 10000 memory_limit 512M post_max_size 240M

我设置了以下PHP参数:

{{1}}

有人可以告诉我发生了什么事吗?

编辑:不,这不是重复的问题。我知道上限可能很大。我的示例仅发送兆字节,并且更改了PHP设置(以上)以创建足够的余量。由于某些原因,键/值根本无法在我的服务器上看到。

1 个答案:

答案 0 :(得分:3)

我的猜测是,您很可能已在服务器上安装了Suhosin-它具有限制POST参数值长度的设置,并且该值与默认值完全相同:

https://suhosin.org/stories/configuration.html#suhosin-post-max-value-length

  

suhosin.post.max_value_length
  类型:整数
  默认值:1000000
  定义通过POST请求注册的变量的最大长度。