Apache の設定が邪魔くさいので、さっさと nginx と PHP に MySQL を加えて WordPress のテーマやプラグインのテストをやることがよくあります。
その際に、自前テーマやプラグインなど、プラウザからアップロードするときに、
「413 Request Entity Too Large」
とエラーが出ることが普通にあります。
ここ数年、この手の経験をしていなかったのですが、アップロードするテーマのサイズが大きすぎたりすると不意打ちを喰らいますね。
特に、動画ファイル入りの最近のカッコイイテーマは要注意です。
設定環境
FreeBSD INSPIRON 12.2-RELEASE-p1 FreeBSD 12.2-RELEASE-p1 GENERIC amd64
nginx-1.18.0_45,2
"413 Request Entity Too Large"に対応する
解決策は簡単で、設定ファイルの最大ファイルアップロード許可サイズを割り増して再起動かけるだけです。
が、久しぶりにドシロウトな勘違いして焦ってしまいました。
まず、上のエラー"413 Request Entity Too Large"はPHP からきているものだと思いました。
当然、php.ini をエディタで開きます。
bash # vi /usr/local/etc/php.ini ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit ; デフォルト128MB なので問題なさそうですが、256MB に倍増させておきます。 memory_limit = 256M ; Maximum size of POST data that PHP will accept. ; デフォルト 8MB なので、これも 256MB に余裕をもたせます。 post_max_size = 256M ; Maximum allowed size for uploaded files. ; デフォルト 2M なので、さすがに増やしておきます。 upload_max_filesize = 256M
設定完了、nginx 再起動・・・
これで、後は nginx を再起動するだけです・・・と思い込んでいました。
bash
# /usr/local/etc/rc.d/init.d/nginx restart
ほとんど設定終えたつもりで余裕でリスタートしたのですが、
結果変わらず、アップロードできず・・・
考えること十数秒、「そうそう、nginx だったわ。nginx.conf を書き換えねば・・・」
bash
# vi /usr/local/nginx/nginx.conf
server {
... いろいろ色々設定
client_max_body_size 256M;
... いろいろ色々設定
}
と server{ ・・・ } の中にブラウザから受け付ける最大のファイルサイズを書き込んでおきます。今回は、"client_max_body_size 256M;" と 256MB にしました。
で、再起動
bash
# /usr/local/etc/rc.d/init.d/nginx restart
するのですが・・・
何故かうまく行かない・・・
恥かしいミス、もう一度再起動・・・
アタマが Apache 用になっているのか、一分以上考え込んでしまいました。
「nginx だったわ、php は fast-cgi 経由だったわ」
bash
# /usr/local/etc/rc.d/init.d/php-fastcgi restart
fast-cgi を再起動しないと、php の変更部分は更新されないのでした。
もう少しで、マシンごとOS再起動して Windows 厨みたいこことやりかけました。
誰にも見られていなくて恥かかずにすみました。
今回の小ネタのまとめ
まとめ
nginx は fast-cgi がらみの場合、リスタートは nginx ではなくて、fast-cgi の方に注意せよ!
シロウトネタですが、お役にたてば幸いです。