結構沼ったので備忘録
【作業目的】
WordPress 管理画面から 20〜30MB 程度の音声ファイル(mp3)をアップロード可能にする
(KUSANAGI + nginx + PHP 環境)
【発生していたエラー】
WordPress 管理画面のメディアアップロード時に失敗
nginx エラーログに以下が大量出力
client intended to send too large body: XXXXXXXX bytes
POST /wp-admin/async-upload.php
PHP 以前に nginx がリクエストサイズで遮断していた。
【環境】
・サーバー構成 : KUSANAGI
・Web サーバー : nginx(nginx129)
・PHP : php-fpm
・WordPress サイト : 〇〇〇〇(音声配信用サイト制作中)
【結論(最重要ポイント)】
最終原因は nginx の http{} ブロック直下にある client_max_body_size の初期値(20M)。
site 用 conf や PHP 設定をどれだけ変更しても、この値を上げない限りアップロードは失敗する。
【1. PHP 側の設定変更】
編集ファイル
/etc/opt/kusanagi/php.d/php.ini
既存行を修正(追記ではなく上書き)
upload_max_filesize = 128M
post_max_size = 128M
memory_limit = 512M
※ 同名設定を下に追記すると混乱するため、既存定義を直接変更
※ 途中で追記した設定はコメントアウトして整理
反映
systemctl restart php-fpm
確認
php -i | egrep “upload_max_filesize|post_max_size|memory_limit”
【2. サイト別 nginx 設定(途中まで有効だが決定打ではない)】
編集ファイル
/etc/opt/kusanagi/nginx/conf.d/〇〇〇〇.conf
設定
client_max_body_size 200M;
注意
・同一 server / location 内で複数指定すると nginx が起動しなくなる
・重複行は必ずコメントアウト
確認
/opt/kusanagi/nginx129/sbin/nginx -t -c /etc/opt/kusanagi/nginx/nginx.conf
【3. 共通テンプレ設定の修正】
編集ファイル
/etc/opt/kusanagi/nginx/conf.d/kusanagi_html.conf
修正内容(2箇所)
client_max_body_size 16M;
↓
client_max_body_size 200M;
反映
systemctl restart nginx129
※ ここまでやってもまだアップロード不可だった
⸻
【4. 本当の原因の特定】
実効設定を確認
/opt/kusanagi/nginx129/sbin/nginx -T -c /etc/opt/kusanagi/nginx/nginx.conf | grep client_max_body_size
結果
http{} ブロック直下に以下が存在
client_max_body_size 20M;
これが全設定より 最優先で適用 されていた。
【5. nginx グローバル設定の修正(最終解決)】
編集ファイル
/etc/opt/kusanagi/nginx/nginx.conf
変更
client_max_body_size 20M;
↓
client_max_body_size 200M;
コマンド例
cp -a /etc/opt/kusanagi/nginx/nginx.conf /etc/opt/kusanagi/nginx/nginx.conf.bak sed -i ‘s/client_max_body_size[[:space:]]\+20M;/client_max_body_size 200M;/g’ /etc/opt/kusanagi/nginx/nginx.conf
確認
/opt/kusanagi/nginx129/sbin/nginx -t -c /etc/opt/kusanagi/nginx/nginx.conf
反映
systemctl restart nginx129
【6. 結果】
・WordPress 管理画面から 30MB 前後の mp3 を正常アップロード可能
・async-upload.php の 413 エラー完全解消
・PHP / nginx ともに整合状態
【ログ確認先】
/home/〇〇〇〇/log/nginx/
主に error.log / ssl_error.log を確認
【今回の教訓】
KUSANAGI 環境では
「site 用 conf や PHP 設定より、http{} 直下の nginx 設定が最優先」
必ず nginx -T で 実際に有効な設定値を確認すること。

コメント