PHP max_input_vars


85

Bir max_input_varshata mesajı alıyorum .

Bunu php.ini5.3.9 sürümünden itibaren değiştirebilecek bir ayar olduğunu anlıyorum ancak 5.1.6 sürümünü çalıştırıyorum.

5.1.6 sunucum için yapılandırma bilgilerini görüntülediğimde, max_input_varsdeğerin 1000 olduğunu gösteriyor .

Sorum şu: 5.1.6'yı çalıştırmama rağmen, bu ayarı buradan görüyorum phpinfo()ama php.inidosyada yok. Bu, değerin PHP'nin bu sürümünde sabit kodlandığı ve değiştirilemeyeceği anlamına mı geliyor?


2
max_input_varsPHP 5.1.6 kaynak kodunda herhangi bir referans göremiyorum , bu yüzden phpinfo () çıktısında nasıl gördüğünüzden emin değilim. Bildiğim kadarıyla,
5.3.9'dan

2
Birçok parametrenin sabit kodlu varsayılanları vardır, ancak yine de yeni bir değer atayabilirsiniz. Php.ini'de bir şeyin açıkça ayarlanmaması, onu değiştirmek için php.ini'yi kullanamayacağınız anlamına gelmez.
oktern

Hangi hata mesajını alıyorsunuz? Lütfen sorunuza ekleyin.
hakre


'Den yükselttikten ve 5.1.6 -> 5.3.3sonra eski sürüme geçtikten sonra bu hatayla karşılaştım 5.1.6. Beni attı çünkü bu seçenek 5.1.6 php.inidosyada yok. Satırı ekledim, numarayı yükselttim ve hatam / sorunum ortadan kalktı.
JoshP

Yanıtlar:


48

Bunu php.ini'ye ekleyebilirsiniz ve çalışmalıdır - sadece PHP 5.3.6'da test edilmiştir.


Teşekkürler, bunu bilmeye değer, ancak 5.3.3'teyim ve neşe yok.
Vaughany

Bu bariz işaretçi için teşekkürler, cidden - Bu ayarı bir saat arıyordum .... Bunu görene kadar, kukla ekleyin!
jamesTheProgrammer

1
@Vaughany Bitnami yığını üzerindeyseniz, kullanmanız durumunda php-fpm'yi yeniden başlatmanız gerekeceğini unutmayın. Basitçe apache'yi yeniden başlatmak yardımcı olmaz ve /opt/bitnami/php/etc/php.ini'de bir değişiklik yaptıktan sonra bile gerekli olmayabilir
Shrenik

101

PHP net referansı:

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

Lütfen unutmayın, bu yönergeyi çalışma zamanında işlev ile ayarlayamazsınız ini_set(name, newValue), örn.

ini_set('max_input_vars', 3000);

Çalışmayacak.

Dokümantasyonda açıklandığı gibi, bu yönerge yalnızca dizin kapsamı başına ayarlanabilir, yani .htaccess dosyası, httpd.conf veya .user.ini (PHP 5.3'ten beri) aracılığıyla.

Bkz. Http://php.net/manual/en/configuration.changes.modes.php

Yönergeyi php.ini içine eklemek veya aşağıdaki satırları .htaccess içine yerleştirmek işe yarayacaktır:

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
Veya 3 suhosin direktifinin tümünü php.ini'ye yerleştirmek tamamdır.
Alain Tiemblo

1
Php.ini'ye erişiminiz varsa, yönerge sözdizimi max_input_vars = 3000(+ eşittir işareti) şeklindedir.
Parapluie

@ shorif2000 IIS, PHP 7 w / wincache'de .user.ini dosyasını kullanarak benzer bir sorun yaşadım. İlk sorun önbellekti. .User.ini içinde satırları rastgele sırayla hareket ettirdim ve sonunda işe yaradı. İkinci problem, 1000'den 2000'e değiştirmenin bir etkisi olmadı, ancak tüm hattı farklı bir hatta taşıdığımda işe yaradı.
Ryan Briscall

20

Bu düzeltmeyi 5.3.3 ile denedim ve değişiklik yok. Google'da gezinirken bu web sayfasını http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/ sunucunuz Suhosin yamasını kullanıyorsa değiştirilmesi gereken diğer ayarları ayrıntılı olarak buldum Debian altında Apache'nin yaptığı.

Site açıklıyor:

Öyleyse, bu sayıyı varsayılan sayı olan 1000'den 3000'e çıkarmak istiyorsanız, php.ini'nize şu satırları koymanız gerekir:

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

Test ettim (php.ini'ye hem / etc / php5 / apache2 hem de / etc / php5 / cli içinde ayarlar ekledim ve Apache'yi başarıyla yeniden başlattım) ancak phpinfo'da hala max_input_vars değişkeni yok.

Birkaç site, bu değişikliğin uygulanacağı ilk PHP sürümü olarak PHP 5.3.9'a işaret ediyor, bu nedenle benim hatam, ilk etapta RTM'nin düzgün şekilde yapılmaması, ancak kişilerin 5.3.3'ün üzerindeki sürümlerde çalıştığını bildirmekle ilgileniyorum. ancak 5.3.9'un altında.


9

Php.ini dosyasında max_input_vars değerinin açıklamasını kaldırmanız ve arttırmanız (exp. 2000) gerekir, ayrıca sunucunuzu yeniden başlatmayı unutmayın, bu% 99,99 için yardımcı olacaktır.


Bu benim için Ubuntu 12.04'te işe yaramadı. 3000'e ayarlayın ve kullanıldı sudo service apache2 restart. Ubuntu'yu yeniden başlatmam gerekir mi?
motorbaby

@motorbaby, Bu değeri php.ini'de yorumladıysanız, o zaman sadece uncomment ve yeniden başlatma servislerine sahiptiniz. İşletim sistemini yeniden başlatmak gerekli değildir, ancak yapılabilir, ancak bunda bir anlam görmüyorum. Eğer sahip değilseniz, @ lubosdz çözümünü kullanın. Her ikisi de yardımcı olmazsa, değişiklikleri doğru yerde yapıp yapmadığınızı kontrol edin, örneğin bir şekilde birkaç php.ini dosyanız var. Ayrıca yapılandırmaları yeniden yüklemek için yalnızca "sudo service apache2 reload" özelliğini kullanmayı deneyebilirsiniz
Oleg Sapishchuk

Hat oradaydı. ;Değeri kaldırdım ve 3000 olarak değiştirdim. Sorun büyük olasılıkla tarayıcının önbelleğiydi. PHPMyAdmin'i kapattı ve yeni bir sekmede açıldı ve şimdi çalışıyor. Teşekkürler!
motorbaby

7

Şimdi 2018.Ve bunu aşan bir talep göndermem gerektiğinde bu soruna takılı kaldım. max_input_vars . Ve benim gibi yenilerin max_input_varsparam değiştirdikten sonra php fpm servisini yeniden başlatmayı unuttuğu bir çözüm buldum . çünkü sadece apache2servisi yeniden başlatmayı denedim ama php fpm değil

  1. yorum çözme kodu /etc/php/7.0/fpm/php.ini ve numarayı istediğiniz gibi ayarlayın
    max_input_vars = 4000
  2. php 7 kullandığım için php fpm hizmetini yeniden başlatın. Bu nedenle,
    sudo service php7.0-fpm restart

Umarım
Test Edilmesine yardımcı olur Debian Stretch,php7.0


Değişikliklerin uygulandığından nasıl emin olacağımı ve bu kadar çok çözümü nasıl okuyacağımı bulmaya çalışarak tam bir günü boşa harcadım. Hepsi php.ini'de değişiklik yaptıktan sonra apache'yi yeniden başlatmanız gerektiğini söylediler, bu da bir fark yaratmadı. Bu çözümde belirtildiği gibi php7.2-fpm'yi yeniden başlatmak sorunu çözdü!
nightrain

3

Bu direktifin kullanılması, karma çarpışmaları kullanan hizmet reddi saldırıları olasılığını azaltır. Bu yönergede belirtilenden daha fazla girdi değişkeni varsa, bir E_WARNING çıkarılır ve diğer girdi değişkenleri istekten kesilir.

1000 olan varsayılan değeri genişletmemeyi ve isteği serileştirerek veya isteği bloklar halinde göndererek uygulama işlevselliğini genişletmemeyi önerebilirim. Aksi takdirde, bunu gerekli yapılandırmaya genişletebilirsiniz.

Php.ini içinde kesinlikle kurulması gerekiyor


3

Bunu, Centos6'da çalışan "php.ini" yerine Centos7'deki ".user.ini" dosyasına koymanız gerektiğini unutmayın. Yalnızca o dizini etkilemek için herhangi bir alt dizine ".user.ini" koyabilirsiniz.

.user.ini:

max_input_vars = 3000

Centos7 ve PHP 5.6.33 üzerinde test edilmiştir.


2

php_value max_input_vars 6000

"Bu satırı sitenizin .htaccess dosyasına koyun."


0

.Htaccess dosyasını görmek için yeni Cpanels bloğu veya bir .user.ini eklerseniz, onu göremezsiniz. ancak küçük bir hack ile çalışmasını sağlayabilirsiniz. Örneğin wp-config.php'yi düzenleyin ve URL çubuğunda wp-config.php'yi .htaccess ile değiştirin, şimdi değerleri yapıştırabilir ve kaydedebilirsiniz. görüntü açıklamasını buraya girin


0

Wordpress'e menü öğeleri eklerken aynı sorunu yaşadım. Ubuntu 18.04, PHP 7.0 üzerinde Wordpress 4.9.9 kullanıyorum. Aşağıdaki satırı basitçe yorumlamadım ve 1500'de/etc/php/7.0/apache2/php.ini

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

Sonra değişikliği etkilemek için aşağıdakileri kullandı:

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

Umarım yardımcı olur.


0

"PHP mesajı: PHP Uyarı: Bilinmeyen: Giriş değişkenleri 1000'i aştı. Sınırı artırmak için php.ini'de max_input_vars'ı değiştirin.

Bu php yapılandırma parametresi max_input_vars sadece GET / POST / COOKIES parametrelerinizi etkilemeyecek, aynı zamanda herhangi bir Form Girişinizi de kontrol edecektir.

Değerini ayarlamak veya değiştirmek için aşağıdaki adımları izleyin.

1) mevcut ayarı / değeri php.ini dosyanızda görüntüleyerek kontrol edin. Kullanarak php.ini dosyasını bulun

<?php echo getinfo(); ?>

aşağıdaki anahtarı bulun: Yüklü Yapılandırma Dosyası: /etc/php/5.6/fpm/php.ini

2) php.ini dosyasını düzenlenebilir modda açın ve max_input_vars için arama yapın Bu satır, varsayılan değer olan 1000 ile mevcut varsayılan ayarınızda yorumlanabilir, Bu yüzden kaldırın; açıklamasını kaldırmak ve uygun değerinizle düzenleyin, örneğin 2500.

3) Dosyayı kaydedin ve aşağıdakileri kullanarak PHP Hizmetlerini Yeniden Başlatın sudo service php5.6-fpm restart

Benzer şekilde, diğer herhangi bir benzer PHP Yapılandırmasını kolaylıkla güncelleyebilirsiniz.


0

Sadece tamamlamak için. Mod_suphp kullanan paylaşılan bir sunucuda da aynı sorunu yaşıyordum.

4 max_input_vars (suhosin dahil) bildirmek, sorunu çözmedi, sadece 1000 değişkende kesmeye devam etti (varsayılan) ve .htaccess üzerinde "php_value max_input_vars 6000" i bildirmek 500 hatasını attı.

Çözülen şey, php.ini dosyasını o yola özyinelemeli olarak uygulayan .htaccess üzerine eklemek oldu.

suPHP_ConfigPath /home/myuser/public_html

-6

Evet, onu php.ini'ye ekleyin, apache'yi yeniden başlatın ve çalışmalıdır.

İsterseniz anında test edebilirsiniz. ini_set("max_input_vars",100)


8
Bu işe yaramayacak, bkz. Php.net/manual/en/info.configuration.php . İni_set değil, dizin sanal ana bilgisayarı veya htaccess başına ayarlanmalıdır.
lubosdz

Bu değişkeni ini_set fonksiyonu ile ayarlayabiliriz. Bu cevap neden olumsuz oy aldı? php.net/manual/en/info.configuration.php
Ahmad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.