PHP max_input_vars


85

मुझे एक max_input_varsत्रुटि संदेश मिल रहा है ।

मैं समझता हूं php.iniकि एक सेटिंग है जो इसे 5.3.9 संस्करण के साथ शुरू कर सकती है, हालांकि, मैं 5.1.6 संस्करण चला रहा हूं।

जब मैं अपने 5.1.6 सर्वर के लिए कॉन्फ़िगरेशन जानकारी देखता हूं, तो यह max_input_vars1000 दिखाता है।

मेरा सवाल है: भले ही मैं 5.1.6 चला रहा हूं, मैं इस सेटिंग को देखता हूं phpinfo()लेकिन यह php.iniफ़ाइल में नहीं है । क्या इसका मतलब यह है कि PHP के इस संस्करण में मूल्य कोडित है और इसे बदला नहीं जा सकता है?


2
मुझे max_input_varsPHP 5.1.6 स्रोत कोड में बिल्कुल भी कोई संदर्भ नहीं दिखता है , इसलिए मुझे यकीन नहीं है कि आप इसे phpinfo () आउटपुट में कैसे देख रहे हैं। जहाँ तक मुझे पता है, यह
5.3.9

2
कई मापदंडों में चूक हैं जो हार्ड-कोडेड हैं, लेकिन आप अभी भी एक नया मान असाइन कर सकते हैं। तथ्य यह है कि कुछ स्पष्ट रूप से php.ini में सेट नहीं है इसका मतलब यह नहीं है कि आप इसे बदलने के लिए php.ini का उपयोग नहीं कर सकते हैं।
अष्टकूट

आपको कौन सा त्रुटि संदेश मिलता है? कृपया इसे अपने प्रश्न में जोड़ें।
हकरे


मैं अपग्रेड करने के बाद इस त्रुटि में चला गया 5.1.6 -> 5.3.3, फिर वापस अपग्रेड कर रहा हूं 5.1.6। मुझे फेंक दिया क्योंकि 5.1.6 php.iniफ़ाइल में वह विकल्प मौजूद नहीं है । मैंने रेखा को जोड़ा, संख्या को टकराया, और मेरी त्रुटि / समस्या चली गई।
जोश

जवाबों:


48

आप इसे php.ini में जोड़ सकते हैं और यह काम करना चाहिए - बस इसे PHP 5.3.6 पर परीक्षण किया।


धन्यवाद, यह जानने लायक है, हालांकि मैं 5.3.3 पर हूं और कोई खुशी नहीं है।
वघानी

उस स्पष्ट सूचक के लिए धन्यवाद, गंभीरता से - मैं एक घंटे के लिए इस सेटिंग की तलाश कर रहा था .... जब तक मैंने यह नहीं देखा, इसे डमी जोड़ें!
jamesTheProgrammer 13

1
@Vaughany ध्यान दें कि यदि आप बिटनामी स्टैक पर हैं तो आपको php-fpm को फिर से शुरू करना होगा, यदि आप इसका उपयोग कर रहे हैं। सीधे शब्दों में पुन: प्रारंभ अपाचे और भी /opt/bitnami/php/etc/php.ini करने के लिए एक परिवर्तन करने के बाद आवश्यक नहीं हो सकता है नहीं किया जाएगा
Shrenik

101

PHP नेट पर संदर्भ:

http://php.net/manual/en/info.configuration.php#ini.max-input-vars

कृपया ध्यान दें, आप इस निर्देश को रन-टाइम में फ़ंक्शन के साथ सेट नहीं कर सकते ini_set(name, newValue), उदाहरण के लिए

ini_set('max_input_vars', 3000);

यह काम नहीं करेगा।

जैसा कि प्रलेखन में बताया गया है, यह निर्देश केवल प्रति डायरेक्टरी स्कोप निर्धारित किया जा सकता है, जिसका अर्थ है .htaccess फ़ाइल, httpd.conf या .user.ini (PHP 5.3 के बाद से)।

Http://php.net/manual/en/configuration.changes.modes.php देखें

Php.ini में निर्देश जोड़ना या निम्नलिखित लाइनों को .htaccess में रखना काम करेगा:

php_value max_input_vars 3000
php_value suhosin.get.max_vars 3000
php_value suhosin.post.max_vars 3000
php_value suhosin.request.max_vars 3000

3
या php.ini पर सभी 3 सुहोसिन निर्देशों को रखना ठीक है।
Alain Tiemblo

1
यदि आपके पास php.ini तक पहुंच है, तो निर्देश सिंटैक्स है max_input_vars = 3000(+ बराबर चिह्न)।
परपलूई

@ shorif2000 मुझे IIS, PHP 7 w / wincache, .user.ini फ़ाइल का उपयोग करने में समान समस्या थी। पहली समस्या कैश की थी। मैंने यादृच्छिक क्रम में, .user.ini में लाइनों को चारों ओर घुमाया, जब तक कि यह अंत में काम नहीं कर गया। दूसरी समस्या, 1000 से 2000 को बदलने का कोई प्रभाव नहीं पड़ा, लेकिन जब मैंने पूरी लाइन को एक अलग लाइन में स्थानांतरित कर दिया, तब यह काम किया।
रयान ब्रिसल

20

बस 5.3.3 के साथ इस सुधार का प्रयास किया है और कोई बदलाव नहीं हुआ है। इस वेब पेज के चारों ओर घूमते हुए मुझे यह वेब पेज http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/ अन्य सेटिंग्स जो आपके सर्वर द्वारा सुहोसिन पैच का उपयोग करके बदलने की आवश्यकता है, का विवरण देना है। डेबियन के तहत अपाचे जो करता है।

साइट बताती है:

इसलिए, यदि आप इस संख्या को बढ़ाना चाहते हैं, तो मान लें कि डिफ़ॉल्ट संख्या में से 3000 जो 1000 है, आपको अपनी पंक्तियों में डालनी होगी।

max_input_vars = 3000 suhosin.post.max_vars = 3000 suhosin.request.max_vars = 3000

मैंने इसका परीक्षण किया (php.ini में / etc / php5 / apache2 और / etc / php5 / cli, और Apache सफलतापूर्वक पुनः आरंभ करने के लिए सेटिंग्स जोड़ दी गई) लेकिन अभी भी phpinfo में कोई max_input_vars चर नहीं है।

कुछ साइटें PHP 5.3.9 को पहले PHP संस्करण के रूप में इंगित करती हैं जिसमें यह परिवर्तन होगा, इसलिए मेरी गलती के लिए RTM ठीक से पहली जगह में नहीं है, हालांकि मुझे दिलचस्पी है कि लोग इसे 5.3.3 से ऊपर के संस्करण में काम करते हुए देखें। लेकिन 5.3.9 से नीचे।


9

आपको php.ini फ़ाइल में max_input_vars मान को अनइंस्टॉल करने की आवश्यकता है और इसे बढ़ाएं (एक्सप। 2000), अपने सर्वर को पुनरारंभ करने के लिए भी मत भूलना यह 99,99% के लिए मदद करेगा।


यह मेरे लिए Ubuntu 12.04 पर काम नहीं किया। इसे 3000 पर सेट करें और उपयोग करें sudo service apache2 restart। क्या मुझे उबंटू को पुनः आरंभ करने की आवश्यकता है?
मोटरबाइक

@motorbaby, यदि आपके पास php.ini में यह मान टिप्पणी की गई थी, तो आपके पास केवल असहजता और पुनरारंभ सेवाएं थीं। रिस्टार्ट ओएस की जरूरत नहीं है, लेकिन किया जा सकता है, लेकिन मुझे इसमें कोई समझ नहीं है। यदि आपके पास यह नहीं था, तो @ lubosdz समाधान का उपयोग करें। यदि दोनों मदद नहीं करेंगे, तो जांचें कि क्या आप सही जगह पर बदलाव कर रहे हैं, उदाहरण के लिए किसी तरह आपके पास कई php.ini फाइलें हैं। इसके अलावा, आप विन्यास को पुनः लोड करने के लिए "
सुडो सेवा अपाचे

लाइन थी। मैंने ;मान को हटा दिया और मान को 3000 में बदल दिया । समस्या ब्राउज़र के कैश होने की संभावना थी। बंद PHPMyAdmin और एक नया टैब में खोला और यह अब काम करता है। धन्यवाद!
मोटरबाइक

6

अब यह 2018 है। और मैं इस समस्या पर तभी अटक गया जब मुझे एक अनुरोध भेजना चाहिए जो कि इससे अधिक हो max_input_vars। और मैं एक समाधान के साथ आया था कि मेरे जैसे newie max_input_varsparam बदलने के बाद php fpm सेवा को फिर से शुरू करना भूल गया । क्योंकि मैंने केवल apache2सेवा को पुनरारंभ करने का प्रयास किया था , लेकिन php fpm नहीं

  1. /etc/php/7.0/fpm/php.iniअपनी इच्छानुसार कोड को सेट करें और संख्या निर्धारित करें
    max_input_vars = 4000
  2. php fpm सेवा को पुनरारंभ करें, क्योंकि मैं php 7 का उपयोग करता हूं। इसलिए,
    sudo service php7.0-fpm restart

आशा है कि यह
परीक्षण में मदद करता है Debian Stretch,php7.0


मैंने एक पूरा दिन बर्बाद कर दिया और यह सुनिश्चित करने की कोशिश की कि कैसे परिवर्तन लागू किए जाएं और कितने समाधान पढ़ें। सभी ने php.in में बदलाव करने के बाद उल्लेख किया है कि आपको अपाचे को फिर से शुरू करना चाहिए, जिससे कोई फर्क नहीं पड़ा। इस समाधान में बताए अनुसार php7.2-fpm को पुनः आरंभ करने से समस्या हल हो गई!
रात में

3

इस निर्देश का उपयोग सेवा के हमलों से इनकार करने की संभावना को कम करता है जो हैश टकराव का उपयोग करते हैं। यदि इस निर्देश द्वारा निर्दिष्ट से अधिक इनपुट चर हैं, तो E_WARNING जारी किया जाता है, और आगे के इनपुट चर अनुरोध से काट दिए जाते हैं।

मैं डिफ़ॉल्ट मान का विस्तार नहीं करने का सुझाव दे सकता हूं जो कि 1000 है और अनुरोध को क्रमबद्ध करके या ब्लॉक करके अनुरोध भेजकर एप्लिकेशन कार्यक्षमता का विस्तार कर सकता है। अन्यथा, आप इसे आवश्यक कॉन्फ़िगरेशन तक बढ़ा सकते हैं।

इसे निश्चित रूप से php.ini में सेट करना होगा


3

ध्यान दें कि आपको इसे "php.ini" के बजाय Centos7 में ".user.ini" फाइल में डालना होगा जो Centos6 में काम करता था। आप केवल उस निर्देशिका को प्रभावित करने के लिए किसी भी उपनिर्देशिका में ".user.ini" डाल सकते हैं।

.user.ini:

max_input_vars = 3000

Centos7 और PHP 5.6.33 पर परीक्षण किया गया।



0

.Htaccess फ़ाइल को देखने के लिए या यदि आप .user.ini जोड़ते हैं, तो आप इसे देखने में सक्षम नहीं होंगे। लेकिन एक छोटे से हैक के साथ आप इसे काम कर सकते हैं। उदाहरण के लिए संपादित करें wp-config.php और URL बार में wp-config.php को बदल दें .htaccess के द्वारा अब आप मानों को चिपका सकते हैं और इसे बचा सकते हैं। यहाँ छवि विवरण दर्ज करें


0

बस Wordpress में मेनू आइटम जोड़ने में एक ही समस्या थी। मैं Ubuntu 18.04, PHP 7.0 पर वर्डप्रेस 4.9.9 का उपयोग कर रहा हूं। मैंने बस निम्नलिखित पंक्ति को अनियोजित किया और इसे बढ़ाकर 1500 कर दिया/etc/php/7.0/apache2/php.ini

; How many GET/POST/COOKIE input variables may be accepted<br>
max_input_vars = 1500

फिर परिवर्तन को प्रभावित करने के लिए निम्नलिखित का उपयोग किया:

sudo apache2ctl configtest  #(if it does not return ok Apache will not start)
sudo service apache2 reload

उम्मीद है की वो मदद करदे।


0

"PHP संदेश: PHP चेतावनी: अज्ञात: इनपुट चर 1000 से अधिक हो गए हैं। php.ini में सीमा परिवर्तन को बढ़ाने के लिए max_input_vars।

यह php कॉन्फ़िगरेशन पैरामीटर max_input_vars न केवल आपके GET / POST / COOKIES पैरामीटर को प्रभावित करेगा, यह आपके किसी भी फॉर्म इनपुट को भी नियंत्रित करता है।

इसके मान को सेट या बदलने के लिए नीचे दिए गए चरणों का पालन करें।

1) अपनी php.ini फ़ाइल लोकेट php.ini फ़ाइल में देखकर मौजूदा सेटिंग / मान की जाँच करें

<?php echo getinfo(); ?>

कुंजी के नीचे खोजें: भरी हुई कॉन्फ़िगरेशन फ़ाइल: /etc/php/5.6/fpm/php.ini

2) संपादन मोड में php.ini फ़ाइल खोलें और अधिकतम_इनपुट_वरों के लिए खोज करें। यह लाइन आपकी मौजूदा डिफ़ॉल्ट सेटिंग में 1000 के डिफ़ॉल्ट मान के साथ टिप्पणी की जा सकती है, इसलिए हटा दें; इसे अनफिल्ट करने के लिए और इसे अपने उपयुक्त मान के साथ संपादित करें जैसे कि 2500।

3) फ़ाइल सहेजें और नीचे का उपयोग करके PHP की सेवाओं को पुनरारंभ करें sudo service php5.6-fpm restart

इसी तरह आप किसी अन्य समान PHP विन्यास को अपनी आसानी से अपडेट कर सकते हैं।


0

बस पूरक के लिए। Mod_suphp का उपयोग करते हुए एक साझा सर्वर पर मैं एक ही मुद्दा रहा था।

4 max_input_vars (suhosin शामिल) की घोषणा करते हुए, इसे हल नहीं किया, यह सिर्फ 1000 vars (डिफ़ॉल्ट) पर छंटनी करता रहा, और "php_value max_input_vars 6000" की घोषणा करते हुए .htaccess ने 500 त्रुटि की।

निम्न पर जोड़ने के लिए इसे क्या हल किया गया था .htaccess, जो उस पथ पर पुन: लागू करता है जो php.ini फ़ाइल को लागू करता है

suPHP_ConfigPath /home/myuser/public_html

-6

हां, इसे php.ini में जोड़ें, अपाचे को पुनरारंभ करें और यह काम करना चाहिए।

यदि आप चाहते हैं तो आप इसे मक्खी पर परीक्षण कर सकते हैं ini_set("max_input_vars",100)


8
यह काम नहीं करेगा, php.net/manual/en/info.configuration.php देखें । वर्चुअल होस्ट या htaccess प्रति निर्देशिका सेट किया जाना चाहिए, ini_set नहीं।
लूबॉस्ज़

हम इस चर को ini_set फ़ंक्शन के माध्यम से सेट कर सकते हैं। इस जवाब को वोट क्यों मिला? php.net/manual/en/info.configuration.php
अहमद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.