- PHP
-
2025-06-08
PHP-FPMの.user.ini設定を少し深掘りしてみます。
ファイルのアップロード可能な容量制限を変更するとき、次のような設定をすることがあります。
memory_limit = 256M upload_max_filesize = 10M post_max_size = 12M
しかし、実はこれうまくいきません。
このうち.user.iniで完全に反映できるのはmemory_limitのみです。
他2つは.user.iniではphpinfo()
に反映されても、実際の動作には反映されない可能性が高いです。
ディレクティブ | .user.iniに設定 | phpinfo() に反映 | 動作に反映されるか |
---|---|---|---|
memory_limit | できる | 表示される | 動作にも反映 |
post_max_size | 一部反映される | 表示される | 動作には反映されない(FPM起動前に必要) |
upload_max_filesize | 一部反映される | 表示される | 動作には反映されない(FPM起動前に必要) |
なぜupload_max_filesize・post_max_sizeが効かないのか
これらはPHPがファイルやPOSTデータを受け取る前に使われる設定のためです。
post_max_size
:PHPがPOSTデータ全体を読み込む前に必要
upload_max_filesize
:ファイルアップロード制御も同様にPHPエンジンが処理を始める前に評価
.user.iniは「スクリプトが実行される直前」に読み込まれるため、POSTボディがすでに破棄された後ということになります。
正しい設定方法(PHP-FPM環境)
.user.iniではなくFPMの構成ファイル(www.conf)かphp.iniに設定します。
