【问题标题】:Is it possible to change max_input_vars in runtime?是否可以在运行时更改 max_input_vars?
【发布时间】:2014-07-14 06:05:41
【问题描述】:

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

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

$this->input->post('formelement') uses max_input_vars as limiter.

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

我正在使用 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 值等,填充 postdata,正确分解它等等......

我也在 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 Version 5.5.7-1+sury.org~precise+1

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

【问题讨论】:

    标签: php forms codeigniter input


    【解决方案1】:

    不,不能在运行时更改它。

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

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

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

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

    【讨论】:

    • 这回答了实际问题。但我有什么选择。我用 htaccess 做错了吗?
    • 我收到错误:超过了 max_input_var。请更改您的 php.ini(或类似的东西)
    • 好吧,正如错误消息所暗示的,在 php.ini 中更改它。 (对不起,如果这听起来像我说的很明显)
    • 是的,我试图在问题中说明这一点。在我的网络服务器(wamp)本地我可以这样做,但不能在我的网络托管服务器上。
    • @bestprogrammerintheworld:您也可以通过联系您的托管服务商的支持并要求他们提供指导和支持来使用您的虚拟主机服务器。当您担心限制时,主机可能会或阻止它。所以它要么可能要么不可能,这非常类似于 PHP 中的运行时设置可能性。所以最后这可能只是你的 webhoster 对 PHP 的限制。那么答案就是切换主机。
    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多