この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設定ファイルの1つが設定をオーバーライドしていることを確認しましたが、次のファイルはありません。

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ファイルを調べて、それらの1つが使用されていることを確認しました。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ファイルがどこにあると思うかを調べるより)。

それら再定義可能Web サーバーの構成、および (少なくとも Apache の場合) .htaccess ファイルおよびその他の .ini ファイル.特定のパスにマップされたWebサーバーのオーバーライド、.htaccess、およびPHP_INI_PERDIRオーバーライドは特定のディレクトリツリーにのみ適用されます(たとえば、エラーを報告したスクリプトと同じディレクトリでphpinfo()を確認してください)。テストスクリプトを書くとprint ini_get("upload_max_filesize") . " / " ini_get("post_max_size");便利です。

コードをスキャンしてinit_set

おすすめ記事