PHP max_input_vars


85

내가지고있어 max_input_vars오류 메시지.

php.ini버전 5.3.9부터이를 변경할 수 있는 설정이 있음을 이해 하지만 버전 5.1.6을 실행하고 있습니다.

5.1.6 서버에 대한 구성 정보를 보면 max_input_vars값이 1000으로 표시됩니다.

내 질문은 : 5.1.6을 실행하고 phpinfo()있지만 이 설정이 표시 되지만 php.ini파일에 없습니다 . 이 값이이 버전의 PHP에서 하드 코딩되어 변경할 수 없음을 의미합니까?


2
max_input_varsPHP 5.1.6 소스 코드에 전혀 참조가 표시 되지 않으므로 phpinfo () 출력에서 ​​어떻게 보이는지 잘 모르겠습니다. 내가 아는 한, 5.3.9 이전에는 존재하지 않았습니다 ...
drew010

2
많은 매개 변수에는 하드 코딩 된 기본값이 있지만 여전히 새 값을 할당 할 수 있습니다. php.ini에 명시 적으로 설정되어 있지 않다고해서 php.ini를 사용하여 변경할 수 없다는 의미는 아닙니다.
octern

어떤 오류 메시지가 표시됩니까? 질문에 추가하십시오.
hakre


에서 업그레이드 5.1.6 -> 5.3.3한 다음 에서 다시 다운 그레이드 한 후이 오류가 발생 했습니다 5.1.6. 그 옵션이 5.1.6 php.ini파일에 존재하지 않기 때문에 나를 던 졌습니다. 줄을 추가하고 번호를 올렸는데 오류 / 문제가 사라졌습니다.
JoshP 2014 년

답변:


48

php.ini에 추가 할 수 있으며 작동합니다. PHP 5.3.6에서 테스트했습니다.


고마워요. 비록 제가 5.3.3에 있고 기쁨이 없지만 알 가치가 있습니다.
Vaughany

그 명백한 포인터에 감사합니다. 진지하게-나는이 설정을 한 시간 동안 찾고 있었다. ... 이걸 볼 때까지, 더미를 추가하십시오!
jamesTheProgrammer

1
@Vaughany 당신이 bitnami 스택에 있다면 그것을 사용하는 경우에 대비하여 php-fpm을 다시 시작해야합니다. 간단하게 다시 시작 아파치 도움 심지어 /opt/bitnami/php/etc/php.ini을 변경 한 후 필요하지 않을 수 없습니다
Shrenik을

101

PHP net에 대한 참조 :

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 개의 suhosin 지시문을 모두 배치하는 것은 괜찮습니다.
Alain Tiemblo

1
php.ini에 액세스 할 수있는 경우 지시문 구문은 max_input_vars = 3000(+ 등호)입니다.
Parapluie 2017

@ shorif2000 .user.ini 파일을 사용하여 IIS, PHP 7 w / wincache에서 비슷한 문제가 발생했습니다. 첫 번째 문제는 캐시였습니다. 최종적으로 작동 할 때까지 .user.ini에서 임의의 순서로 줄을 이동했습니다. 두 번째 문제는 1000에서 2000으로 변경해도 효과가 없었지만 전체 라인을 다른 라인으로 이동하면 효과가있었습니다.
Ryan Briscall

20

5.3.3에서이 수정을 시도했지만 변경 사항이 없습니다. 인터넷 검색을 통해이 웹 페이지 http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/에서 서버가 Suhosin 패치를 사용 하는 경우 변경해야하는 다른 설정을 자세히 설명했습니다. 데비안에서 아파치가하는 일입니다.

이 사이트는 다음을 설명합니다.

따라서이 숫자를 기본 숫자 인 1000에서 3000으로 늘리려면 php.ini에 다음 줄을 입력해야합니다.

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

나는 그것을 테스트했지만 (/ etc / php5 / apache2 및 / etc / php5 / cli에서 php.ini에 설정을 추가하고 Apache를 성공적으로 다시 시작했습니다) phpinfo에는 여전히 max_input_vars 변수가 없습니다.

몇몇 사이트는이 변경이 적용될 첫 번째 PHP 버전으로 PHP 5.3.9를 가리키고 있습니다. 따라서 5.3.3 이상의 버전에서 작동하는 사람들을보고 싶은데 관심이 있지만 RTM이 제대로되지 않은 것에 대한 제 잘못입니다. 그러나 5.3.9 미만.


9

php.ini 파일에서 max_input_vars 값의 주석을 해제하고 값을 늘려야합니다 (exp. 2000). 서버를 다시 시작하는 것도 잊지 마십시오. 이것은 99,99 %에 도움이됩니다.


이것은 Ubuntu 12.04에서 작동하지 않았습니다. 3000으로 설정하고 sudo service apache2 restart. Ubuntu를 다시 시작해야합니까?
motorbaby

@motorbaby, php.ini에이 값이 주석 처리 된 경우 주석 처리를 해제하고 서비스를 다시 시작했습니다. 재시작 OS는 필요하지 않지만 할 수는 있지만 이것에 대해서는 아무런 의미가 없습니다. 없는 경우 @ lubosdz 솔루션을 사용하십시오. 둘 다 도움이되지 않으면 올바른 위치에서 변경하고 있는지 확인하십시오. 예를 들어 여러 php.ini 파일이 있습니다. 또한 당신은 다시로드 구성에 대해 "sudo는 서비스 아파치를 다시로드"의 단지 사용을 시도 할 수 있습니다
올렉 Sapishchuk

선이 거기에 있었다. ;값을 제거 하고 3000으로 변경했습니다. 문제는 브라우저의 캐시 일 가능성이 높습니다. PHPMyAdmin을 닫고 새 탭에서 열면 이제 작동합니다. 감사!
motorbaby

6

이제 2018 년이되었고, .NET Framework를 초과하는 요청을 보내야 할 때이 문제에 막혔습니다 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 7을 사용하므로 php fpm 서비스를 다시 시작하십시오. 따라서,
    sudo service php7.0-fpm restart


테스트에 도움이 되었기 를 바랍니다 Debian Stretch.php7.0


변경 사항이 적용되는지 확인하고 많은 솔루션을 읽는 방법을 알아 내느라 하루 종일 낭비했습니다. 그들은 모두 php.ini를 변경 한 후 apache를 다시 시작해야한다고 언급했지만 차이가 없습니다. 이 솔루션에 명시된대로 php7.2-fpm을 다시 시작하면 문제가 해결되었습니다!
밤비

3

이 지시문을 사용하면 해시 충돌을 사용하는 서비스 거부 공격의 가능성이 줄어 듭니다. 이 지시문에 지정된 것보다 많은 입력 변수가있는 경우 E_WARNING이 발행되고 추가 입력 변수가 요청에서 잘립니다.

기본값 인 1000을 확장하지 않고 요청을 직렬화하거나 블록 단위로 요청을 전송하여 애플리케이션 기능을 확장하는 것을 제안 할 수 있습니다. 그렇지 않으면 필요한 구성으로 확장 할 수 있습니다.

확실히 php.ini에서 설정해야합니다.


3

Centos6에서 작동하던 "php.ini"가 아닌 Centos7의 ".user.ini"파일에이 파일을 넣어야합니다. 해당 디렉토리에만 영향을 미치기 위해 ".user.ini"를 임의의 하위 디렉토리에 넣을 수 있습니다.

.user.ini :

max_input_vars = 3000

Centos7 및 PHP 5.6.33에서 테스트되었습니다.


2

php_value max_input_vars 6000

"사이트의 .htaccess 파일에이 줄을 넣으십시오."


0

.htaccess 파일을 보거나 .user.ini를 추가하면 새로운 Cpanels 블록을 볼 수 없습니다. 그러나 약간의 해킹으로 작동시킬 수 있습니다. 예를 들어 wp-config.php를 편집하고 URL 표시 줄에서 wp-config.php를 .htaccess로 바꿉니다. 이제 값을 붙여넣고 저장할 수 있습니다. 여기에 이미지 설명 입력


0

Wordpress에 메뉴 항목을 추가하는 데 동일한 문제가 발생했습니다. Ubuntu 18.04, PHP 7.0에서 Wordpress 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 파일을 열고 max_input_vars를 검색하십시오.이 줄은 기존 기본 설정에서 기본값 1000으로 주석 처리 될 수 있으므로 제거하십시오. 주석을 제거하고 적절한 값 (예 : 2500)으로 편집합니다.

3) 아래를 사용하여 파일을 저장하고 PHP 서비스를 다시 시작하십시오. sudo service php5.6-fpm restart

마찬가지로 다른 유사한 PHP 구성을 쉽게 업데이트 할 수 있습니다.


0

보완하기 위해. mod_suphp를 사용하는 공유 서버에서 동일한 문제가 발생했습니다.

4 개의 max_input_vars (suhosin 포함)를 선언하면 문제가 해결되지 않았으며 1000 개의 vars (기본값)에서 계속 잘리고 .htaccess에서 "php_value max_input_vars 6000"을 선언하면 오류 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를 참조하십시오 . ini_set이 아닌 디렉토리 가상 호스트 또는 htaccess별로 설정해야합니다.
lubosdz 2013 년

ini_set 함수를 통해이 변수를 설정할 수 있습니다. 이 답변이 투표를받은 이유는 무엇입니까? php.net/manual/en/info.configuration.php
아마드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.