이 PHP 지시문은 어디에 재정의됩니까?

이 PHP 지시문은 어디에 재정의됩니까?

AH01071: Got error 'PHP message: PHP Warning: POST Content-Length of 17826104 bytes exceeds the limit of 8388608 bytes in Unknown오류 메시지는 일반적으로 php.ini에서 관련 설정 쌍을 변경하여 수정됩니다.upload_max_filesizepost_max_size

내가 겪고 있는 문제는 php.ini에 설정된 설정을 무시하는 것 같다는 것입니다.

php.ini의 구성은 다음과 같습니다.

root@server8:/etc/php$ grep -e post_max -e upload_max /etc/php/8.2/fpm/php.ini
post_max_size = 16M
upload_max_filesize = 16M

phpinfo()을 사용하면 및 as의 값이 각각 8M과 2M임을 알 수 있습니다 . 이러한 설정이 재정의되는 위치를 알아내려고 노력 중입니다.post_max_sizeupload_max_filesize

를 사용하여 phpinfo()및 값을 살펴 Additional .ini files parsed보고 Scan this dir for additional .ini files이러한 지시어가 설정된 파일이 있는지 확인했습니다. 그들은하지 않습니다.

root@server8:/# directive_list=$(echo /etc/php/8.2/fpm/conf.d/10-mysqlnd.ini, /etc/php/8.2/fpm/conf.d/10-opcache.ini, /etc/php/8.2/fpm/conf.d/10-pdo.ini, /etc/php/8.2/fpm/conf.d/15-xml.ini, /etc/php/8.2/fpm/conf.d/20-bcmath.ini, /etc/php/8.2/fpm/conf.d/20-calendar.ini, /etc/php/8.2/fpm/conf.d/20-ctype.ini, /etc/php/8.2/fpm/conf.d/20-curl.ini, /etc/php/8.2/fpm/conf.d/20-dom.ini, /etc/php/8.2/fpm/conf.d/20-exif.ini, /etc/php/8.2/fpm/conf.d/20-ffi.ini, /etc/php/8.2/fpm/conf.d/20-fileinfo.ini, /etc/php/8.2/fpm/conf.d/20-ftp.ini, /etc/php/8.2/fpm/conf.d/20-gd.ini, /etc/php/8.2/fpm/conf.d/20-gettext.ini, /etc/php/8.2/fpm/conf.d/20-iconv.ini, /etc/php/8.2/fpm/conf.d/20-igbinary.ini, /etc/php/8.2/fpm/conf.d/20-mbstring.ini, /etc/php/8.2/fpm/conf.d/20-memcache.ini, /etc/php/8.2/fpm/conf.d/20-mysqli.ini, /etc/php/8.2/fpm/conf.d/20-pdo_mysql.ini, /etc/php/8.2/fpm/conf.d/20-phar.ini, /etc/php/8.2/fpm/conf.d/20-posix.ini, /etc/php/8.2/fpm/conf.d/20-readline.ini, /etc/php/8.2/fpm/conf.d/20-redis.ini, /etc/php/8.2/fpm/conf.d/20-shmop.ini, /etc/php/8.2/fpm/conf.d/20-simplexml.ini, /etc/php/8.2/fpm/conf.d/20-sockets.ini, /etc/php/8.2/fpm/conf.d/20-sysvmsg.ini, /etc/php/8.2/fpm/conf.d/20-sysvsem.ini, /etc/php/8.2/fpm/conf.d/20-sysvshm.ini, /etc/php/8.2/fpm/conf.d/20-tokenizer.ini, /etc/php/8.2/fpm/conf.d/20-xmlreader.ini, /etc/php/8.2/fpm/conf.d/20-xmlwriter.ini, /etc/php/8.2/fpm/conf.d/20-xsl.ini, /etc/php/8.2/fpm/conf.d/20-zip.ini | tr -d ',')
root@server8:/# echo $directive_list | xargs grep max_
/etc/php/8.2/fpm/conf.d/20-memcache.ini:; memcache.max_failover_attempts="20"
root@server8:/# 

Apache 구성 파일 중 하나가 설정을 재정의하는지 확인했지만 다음과 같은 파일은 없습니다.

root@server8:/etc/php$ find /etc/apache2 -name "*conf" | xargs grep max_
root@server8:/etc/php$ find /etc/apache2 -name "*conf" | xargs grep filesize
root@server8:/etc/php$ find /etc/apache2 -name "*conf" | xargs grep post_
root@server8:/etc/php$ 

.htaccess에 이를 재정의할 수 있는 설정이 있는지 확인했습니다.

root@server8:/$ find $vhostdir/../ -name .htaccess 
root@server8:/$ 

(경로를 더 확인해봤습니다)

절망적인 마음에 나는 또한 설치된 다른 모든 PHP 버전의 php.ini 파일을 검사하여 그 중 하나라도 사용되었는지 확인했습니다.phpinfo()

root@server8:/etc/php$ find . -type f |xargs grep upload_max
./8.2/apache2/php.ini:upload_max_filesize = 16M
./8.2/fpm/php.ini:upload_max_filesize = 16M
./8.2/cli/php.ini:upload_max_filesize = 16M
./7.4/apache2/php.ini:upload_max_filesize = 16M
./7.4/fpm/php.ini:upload_max_filesize = 16M
./7.4/cli/php.ini:upload_max_filesize = 16M
./8.1/apache2/php.ini:upload_max_filesize = 16M
./8.1/fpm/php.ini:upload_max_filesize = 16M
./8.1/cli/php.ini:upload_max_filesize = 16M
root@server8:/etc/php$ find . -type f |xargs grep post_max
./8.2/apache2/php.ini:post_max_size = 16M
./8.2/fpm/php.ini:post_max_size = 16M
./8.2/cli/php.ini:post_max_size = 16M
./7.4/apache2/php.ini:post_max_size = 16M
./7.4/fpm/php.ini:post_max_size = 16M
./7.4/cli/php.ini:post_max_size = 16M
./8.1/apache2/php.ini:post_max_size = 16M
./8.1/fpm/php.ini:post_max_size = 16M
./8.1/cli/php.ini:post_max_size = 16M
root@server8:/etc/php$ 

그렇다면 이것들은 어디에서 파생될 수 있을까요? phpinfo()언급된 php.ini 파일을 실제로 사용하시나요?

답변1

phpinfo()에서 언급한 php.ini 파일이 실제로 사용되나요?

예 - 시작하기 좋은 곳입니다(php.ini 파일이 어디에 있을 것이라고 생각하는지 살펴보는 것보다).

그들을재정의 가능웹 서버 구성 및 (적어도 Apache의 경우) .htaccess 파일 및 기타 .ini 파일. 특정 경로에 매핑된 웹 서버 재정의, .htaccess 및 PHP_INI_PERDIR 재정의는 특정 디렉터리 트리에만 적용된다는 점을 명심하세요(예: 오류를 보고한 스크립트와 동일한 디렉터리에서 phpinfo()를 확인하세요). 테스트 스크립트를 작성하는 것이 print ini_get("upload_max_filesize") . " / " ini_get("post_max_size");도움이 될 수 있습니다 .

코드를 스캔하여 init_set.

답변2

@symcbean의 답변은 프로세스와 이에 대한 질문을 확인하는 데 유용했지만 답변은 php-fpm을 다시 시작해야 한다는 것이었습니다.

systemct restart php8.2-fpm

문제는 php-fpm이 사용되는 구성을 로드했는데 실행 중인 서비스에 상주 구성이 있기 때문에 해당 php ini 파일의 변경 사항이 선택되지 않는다는 것입니다.

서비스가 다시 시작된 후 모든 것이 예상대로 작동했습니다.

php.ini 파일의 변경 사항을 적용하려면 apache2도 다시 시작해야 한다는 점은 주목할 가치가 있습니다.

관련 정보