PHP.INI值在同一应用程序中的不同文件之间更改

时间:2014-07-16 23:22:08

标签: php jquery ajax .htaccess

我试图为我的应用程序覆盖一些php.ini变量,因为当通过AJAX调用将数组元素发布到另一个PHP程序时,数组元素被截断了。数组中的元素数量可以是5000到10000之间的任何值,托管强加的限制是1000.

在我看来,最重要的是" max_input_vars"和" post_max_size"是解决这个问题的正确方法。而且,我最初尝试在.htaccess文件中覆盖这些值,但程序选择绕过htaccess值。接下来,我创建了一个自定义的php.ini文件并将其放在托管的根文件夹中,而不仅仅是托管的应用程序文件夹(正如他们的技术支持所建议的那样)。我可以在其中一个应用程序中看到覆盖值,但是,当我进行内部AJAX调用时,会发现奇怪的结果!请参阅附件快照:

max_input_vars issue

前台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

max_input_vars 有什么建议吗?是什么原因导致第二个程序恢复覆盖?那里没有代码可以做到这一点......而且,任何尝试从ini_set()设置max_input_vars的方法都会被程序忽略 - 至少在这个主机下是这样。如何确保应用程序下的所有程序对php.ini值表现出统一的行为?

非常感谢您的帮助和投入!

1 个答案:

答案 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中定义的值?