-
php $_POST 에서 일부 변수 값만 전달 안되는 오류프로그래밍/PHP 2022. 10. 8. 22:03728x90반응형
서버 이전을 하면서 동일한 php 스크립트인데 오류가 나는 케이스를 발견하였다.
post 방식으로 전달한 일부 변수의 값이 설정되어 있지 않아서 나는 오류였는데
같은 스크립트에서 같이 전달된 변수 중 일부 변수의 값만 비어있어서
생각보다 원인을 파악하는데 시간이 걸렸다.
원인은 php.ini 파일의 max_input_vars 의 설정 값이 다른 것이였다.
max_input_vars 는 GET/POST/COOKIE 의 값을 각각 몇 개를 받을 지 설정하는 변수인데
기본값이 1000이라 $_POST로 전달되는 배열이 그 값을 넘었던 것이였다.
이 설정값을 넘을 경우 E_WARNING 이 발생하지만
그 스크립트에서는 마침 error reporting 라인이 없어서 원인 파악도 하기 힘들었던 것이다.
max_input_vars int How many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE superglobal separately). Use of this directive mitigates the possibility of denial of service attacks which use hash collisions. If there are more input variables than specified by this directive, an E_WARNING is issued, and further input variables are truncated from the request.
php.ini의 아래 부분을 수정하였다.
; How many GET/POST/COOKIE input variables may be accepted ; max_input_vars = 1000 max_input_vars = 100000
post_max_size 도 기존 서버와 동일하게 설정하였다.
; Maximum size of POST data that PHP will accept. ; Its value may be 0 to disable the limit. It is ignored if POST data reading ; is disabled through enable_post_data_reading. ; http://php.net/post-max-size ;post_max_size = 8M post_max_size = 40M
php.ini 변경 이후 php를 재시작한다.
sudo service php-fpm restart
그리고 문제의 스크립트의 초반에 error_reporting 함수도 추가해뒀다.
<?php error_reporting(E_ALL);
참고:
https://www.php.net/manual/en/info.configuration.php#ini.max-input-vars
https://ryanbritton.com/2016/04/missing-values-in-php-_post/
728x90반응형'프로그래밍 > PHP' 카테고리의 다른 글
이미지 파일 저장소 s3로 이전하기 (0) 2021.06.12 php에서 이미지 사이즈 줄이기 (0) 2021.06.12 csv 파일 생성하기 (0) 2021.04.20 [php] explode 사용법 (문자열을 문자열로 분리하기) (2) 2021.03.03 php 에러 기록하기 (0) 2021.03.03