是否可以在运行时更改 max_input_vars?

bes*_*rld 4 php forms codeigniter input

在巨大的表单中存在表单元素数量的问题。帖子中未包含某些元素。

经过一番搜索,我看到了这个: $_POST max array size

$this->input->post('formelement') uses max_input_vars as limiter.
Run Code Online (Sandbox Code Playgroud)

上面链接的回答没问题。我知道我必须max_input_vars在 php.ini 中使用。这在本地没问题,但是如果我的生产服务器的网络托管公司不允许我在他们的服务器上更改此设置 - 这不是一个选项。

我正在使用 codeIgniter 并创建一个这样的表单:

<?php        
$attributes = array('id' => 'id of form');
echo form_open('controller/function-name', $attributes);
//actual form content
echo form_close();
?>
Run Code Online (Sandbox Code Playgroud)

进一步阅读后,我明白我可以http://input用来绕过这个 max_input_var 限制。

我可以通过这样做来获得原始数据输出 controller/function-name

$postdata = file_get_contents("php://input"); 
Run Code Online (Sandbox Code Playgroud)

但是随后我将不得不手动检查 csrf 值等,填充 postdata,正确地分解它等等......

我也在 htaccess 中尝试过:(基于PHP 5.2.17 中的 max_input_vars 限制

RewriteEngine On
RewriteBase /
php_value max_input_vars 6000
php_value suhosin.post.max_vars 6000
php_value suhosin.request.max_vars 6000
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Run Code Online (Sandbox Code Playgroud)

但随后网页无法访问,我收到内部错误。

我正在尝试进行更改的服务器正在使用 PHP Version 5.5.7-1+sury.org~precise+1

是否可以max_input_vars在运行时更改(或者我在 htaccess 上做错了什么?)

hak*_*kre 5

不,无法在运行时更改它。

这是因为在运行时输入已经被处理。

所以设置要么已经导致错误,要么改变它为时已晚。

这也记录在手册中,因为它列出了可以更改 ini 指令的位置:

如果您不确定更改 PHP 配置的所有位置以及如何使用它们,该部分还有另一个页面: