大型表单中的表单元素数量有问题.帖子中包含了一些元素.
经过一番搜索,我看到了:
$_POST max array size
$this->input->post('formelement') uses max_input_vars as limiter.
从上面的链接回答可以.我了解我必须在php.ini中使用max_input_vars.在本地可以,但是如果我的生产服务器的Web托管公司不允许我在其服务器上更改此设置-这是不可行的.
我正在使用codeIgniter并创建如下形式:
<?php
$attributes = array('id' => 'id of form');
echo form_open('controller/function-name', $attributes);
//actual form content
echo form_close();
?>
进一步阅读后,我了解可以使用http:// input绕过此max_input_var限制.
我可以通过在controller / function-name中执行此操作来获取原始数据输出
$postdata = file_get_contents("php://input");
但是然后我将不得不手动检查csrf值等,填充后数据,正确展开等,等等.
我也在htaccess中尝试过此操作:(基于max_input_vars limited in PHP 5.2.17)
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]
但是网页无法访问,并且出现内部错误.
我尝试进行更改的服务器正在使用PHP 5.5.7-1 sury.org〜precise 1
是否可以在运行时更改max_input_vars(或者我在htaccess中做错了吗?)
解决方法:
不,无法在运行时进行更改.
这是因为在运行时输入已被处理.
因此,该设置要么已经导致错误,要么为时已晚.
手册中也对此进行了记录,因为它列出了可以更改ini指令的位置:
> Where a configuration setting may be set PHP DOCS
如果不确定所有更改PHP配置的地方在哪里以及如何使用它们,则该部分中还有另一页:
> How to change configuration settings PHP DOCS