WordPress管理画面から20〜30MBの音声ファイル(mp3)をアップ可能にする(KUSANAGI9 + nginx + PHP8環境)

WordPress

結構沼ったので備忘録

【作業目的】

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 で 実際に有効な設定値を確認すること。

コメント

タイトルとURLをコピーしました