2014-07-16 55 views
0

我試圖爲我的應用程序重寫一些php.ini變量,因爲數組元素在通過AJAX調用將它們發佈到另一個PHP程序時被截斷。陣列中元素的數量可以是5000到10000之間的任何值,並且由主機施加的限制是1000.PHP.INI值在同一個應用程序中的不同文件之間變化

它讓我看到重寫「max_input_vars」和「post_max_size」是正確的方法這個問題。而且,我最初試圖在.htaccess文件中覆蓋這些值,但程序選擇繞過htaccess值。接下來,我創建了一個自定義php.ini文件,並將其放置在主機的根文件夾中,而不僅僅是應用程序文件夾中(如其技術支持人員所建議的那樣)。我可以在其中一個應用程序中看到覆蓋值,但是,當我進行內部AJAX調用時,會觀察到奇怪的結果!請參閱所附快照:

max_input_vars issue

max_input_vars在前臺PHP程序可以看出具有值爲「9999999」(用ini_get()函數獲得)。但是,儘管如此,接收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值表現出統一的行爲?

很多感謝您的幫助和投入!

+0

第二個程序根點是否與第一個程序相同?你有沒有試過從index.php程序中設置值(ini_set)? –

+0

@JA,好吧,他們都指向相同的根。實際上,第二個程序駐留在應用程序的子文件夾中,並且由於php.ini駐留在託管目錄的第一級,我希望php.ini值適用於此託管下的所有應用程序。關於在index.php中設置值,那麼,我已經嘗試過,但無濟於事。 –

回答

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中定義的值?

+0

嗨@Ronen Botzer, 非常感謝您的回覆!我對延遲響應表示歉意。瞭解「可變性」屬性和該鏈接非常有用 - 這確認了代碼覆蓋值ini_set()不起作用的原因。曾嘗試.htaccess文件,但也被忽略。 在上面的快照中 - 對應用程序子文件夾中另一個模塊的AJAX調用 - 發現值不同,php.ini位於主機的基礎文件夾中。調用程序(在應用程序文件夾內)選取了自定義的php.ini值,但子文件夾中的程序沒有! –

+0

按照你的建議,我也將php.ini放入應用程序文件夾中。但是,這並沒有改變結果呢!我不知道這是一個意外,還是什麼的,但是當我放在完全相同的php.ini中的應用程序的子文件夾過,接收程序挑選的設置以及:) '/的public_html /application_root \t - php.ini - first_program.php /子文件夾 - (同樣)php.ini(是,再次!) - second_program.php' –

+0

很抱歉,儘管嘗試了好幾次,但我無法正確呈現結構。希望描述有意義嗎?非常感謝! –

相關問題