【问题标题】:PHP form submit ends after 271 submitted variablesPHP表单提交在271个提交变量后结束
【发布时间】:2013-03-18 15:57:59
【问题描述】:

我在提交多个表单时遇到了一点问题:

我正在尝试提交更多的$_POST-variables,但是,我的服务器端脚本在总共提交 271 个表单变量后结束(或只是崩溃)。

在 localhost 上尝试,一切正常,没有任何问题。 在这里,总共提交了 771 个 post 变量。

到目前为止,我还进行了一些研究,试图弄清楚我可以更改哪些变量来配置更大的数据范围或类似的东西。

这是我的服务器配置:

max_execution_time  30  30
max_input_nesting_level 64  64
max_input_time  60  60
max_input_vars  1000    1000
memory_limit    256M    256M
post_max_size   8M  8M

本地主机配置

max_execution_time  30  30
max_file_uploads    20  20
max_input_nesting_level 64  64
max_input_time  60  60
max_input_vars  1000    1000
memory_limit    256M    256M
post_max_size   8M  8M

如您所见,这是相同的配置... 我的服务器上还安装了 suhosin - extension,默认配置。我对这个扩展不太熟悉,但是使用默认值应该会产生这种影响(我猜:))

服务器-PHP 版本:5.3.9
本地:5.3.17

问题和这个one很相似。

我已经尝试解决这个问题好几个星期了,如果你有任何想法的话.. 那就太好了;)

谢谢:)

更新:

如果我使用这种方法 (thanks):

$pairs = explode("&", file_get_contents("php://input"));
$vars = array();
foreach ($pairs as $pair) {
    $nv = explode("=", $pair);
    $name = urldecode($nv[0]);
    $value = urldecode($nv[1]);
    $vars[$name] = $value;
}
print_r($vars);

我看到了我之前显示的所有表单变量和内容。但是,使用

直接访问 $_POST 变量
isset($_POST['LanguageContentForm']

并将其保存到变量中不起作用..:/

【问题讨论】:

  • 对于localhostPOST 请求将传输得更快,因此它可能不会达到 max_execution_time。如果您将localhost 上的 max_execution_time 降低到非常小的值,您可以在本地重现问题吗?同样,如果您增加远程服务器上的值,问题仍然存在吗?
  • 你能检查一下 apache 日志文件,是否记录了任何错误?
  • 这可能会影响到你:phpclasses.org/blog/post/… 你不能只更新服务器 PHP 版本吗?
  • @andyb 减少 max_execution_time 的值没有任何效果...:/

标签: php forms post submit php-ini


【解决方案1】:

如果您检查 phpinfo(),您可以在每台机器上看到 suhosin.post.max_vars 的 var。

您应该可以在 .htaccess 中使用以下内容对其进行更改:

php_value suhosin.post.max_vars 1000
php_value suhosin.request.max_vars 1000

更新

也许这个也是:

suhosin.request.max_varname_length

Type: Integer
Default: 64

定义可以通过 COOKIE、URL 或 POST 请求注册的变量的最大名称长度(不包括可能的数组索引)。此设置也是变量来源特定配置指令的上限。

【讨论】:

  • 在远程机器上,它被设置为 800.. 这还不够吗?
  • suhosin 有很多不同的标志。如果您要传递数组而不是直接变量,那么这些也会受到限制......这是一个很好的参考:hardened-php.net/suhosin/configuration.html
  • 这个在服务器配置上设置为256
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
相关资源
最近更新 更多