我试图为我的应用程序覆盖一些php.ini变量,因为当通过AJAX调用将数组元素发布到另一个PHP程序时,数组元素被截断了。数组中的元素数量可以是5000到10000之间的任何值,托管强加的限制是1000.
在我看来,最重要的是" max_input_vars"和" post_max_size"是解决这个问题的正确方法。而且,我最初尝试在.htaccess文件中覆盖这些值,但程序选择绕过htaccess值。接下来,我创建了一个自定义的php.ini文件并将其放在托管的根文件夹中,而不仅仅是托管的应用程序文件夹(正如他们的技术支持所建议的那样)。我可以在其中一个应用程序中看到覆盖值,但是,当我进行内部AJAX调用时,会发现奇怪的结果!请参阅附件快照:
前台PHP程序中的
max_input_vars(使用ini_get()函数获得)可以看作值为' 9999999'。但是,尽管如此,接收AJAX请求的程序会将max_input_vars恢复为默认的服务器配置!
仅供注释,目录结构如下:
/public_html
- php.ini
/ application_root
- first_program.php
/sub-folder
- second_program.php
有什么建议吗?是什么原因导致第二个程序恢复覆盖?那里没有代码可以做到这一点......而且,任何尝试从ini_set()设置max_input_vars的方法都会被程序忽略 - 至少在这个主机下是这样。如何确保应用程序下的所有程序对php.ini值表现出统一的行为?
非常感谢您的帮助和投入!
答案 0 :(得分:1)
max_input_vars和post_max_size is PHP_INI_PERDIR的可变性,这意味着他们can be set in php.ini,.htaccess,httpd.conf但不使用ini_set()。
因此,使用
在application_root中创建一个.htaccess文件php_value max_input_vars 12345
现在在该目录中创建一个将反映max_input_vars值的测试文件,并通过访问它来检查它。例如:
<?php
error_log(var_export(ini_get('max_input_vars')));
?>
您介意让我们知道该值是否不是.htaccess中定义的值?