feat: アップロード最大サイズをvalues.yamlで設定可能に (v8.5.9-b)
Helm Chart Release / release-chart (push) Successful in 5s
Helm Chart Release / release-chart (push) Successful in 5s
大きなファイルのアップロードが失敗する問題(nginxとPHPそれぞれに 別々の上限があり、片方だけ上げても失敗する)に対応するため、 uploadMaxSize パラメータを新設(デフォルト 100m)。 - values.yaml: uploadMaxSize を追加 - templates/configmap.yaml: nginx の client_max_body_size に反映 - templates/deployment.yaml: PHP-FPM起動時に /usr/local/etc/php/conf.d/99-uploads.ini を生成し、 upload_max_filesize / post_max_size に同じ値を設定(常時適用) - README.md: パラメータ表と設計についての注記を追加 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
|||||||
|
# Changelog - Version 8.5.9-b
|
||||||
|
|
||||||
|
## 新機能
|
||||||
|
|
||||||
|
### アップロード最大サイズを values.yaml で設定可能に
|
||||||
|
|
||||||
|
大きなファイルのアップロードが失敗する問題(nginxとPHPそれぞれに別々のアップロード上限があり、片方だけ上げても失敗する)に対応するため、`uploadMaxSize` パラメータを新設しました。
|
||||||
|
|
||||||
|
#### 主な変更点
|
||||||
|
|
||||||
|
1. **values.yaml**
|
||||||
|
- `uploadMaxSize: "100m"` を追加(デフォルト100MB)
|
||||||
|
|
||||||
|
2. **templates/configmap.yaml**
|
||||||
|
- nginx設定に `client_max_body_size {{ .Values.uploadMaxSize }};` を追加
|
||||||
|
|
||||||
|
3. **templates/deployment.yaml**
|
||||||
|
- PHP-FPM起動時に `/usr/local/etc/php/conf.d/99-uploads.ini` を生成し、
|
||||||
|
`upload_max_filesize` / `post_max_size` に同じ値を設定
|
||||||
|
- 常時適用(他機能の有効化状態に依存しない)
|
||||||
|
|
||||||
|
4. **README.md**
|
||||||
|
- パラメータ表と、nginx/PHP両方に反映される設計についての注記を追加
|
||||||
|
|
||||||
|
## 背景
|
||||||
|
|
||||||
|
nginxの `client_max_body_size` だけを上げても、PHPには独自の `upload_max_filesize`(デフォルト2M)/ `post_max_size`(デフォルト8M)という別の上限があり、nginxを通過した後にPHP側で無言で失敗するケースがありました。この2つを同じ値で連動させることで、設定漏れによる失敗を構造的に防ぎます。
|
||||||
|
|
||||||
|
## 使用例
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
uploadMaxSize: "100m"
|
||||||
|
# 大きな動画ファイルなどを扱う場合
|
||||||
|
# uploadMaxSize: "500m"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 互換性
|
||||||
|
|
||||||
|
- デフォルト値は `100m`(従来の暗黙の上限より大幅に緩和)。既存よりアップロード可能サイズが大きくなる方向の変更のため、既存環境への悪影響はありません。
|
||||||
|
- 大きなファイルをPHP側でメモリに読み込んで処理する場合、`memory_limit`(デフォルト128M程度)が別途不足する可能性がある点に注意してください。
|
||||||
|
|
||||||
|
## アップグレード手順
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm repo update
|
||||||
|
helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.9-b -f values.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**リリース日**: 2026-08-06
|
||||||
|
**担当**: プロサーバーエンジニア(Claude)
|
||||||
@@ -22,6 +22,12 @@ Raspberry Pi などのベアメタルで稼働することを想定した、Kube
|
|||||||
|
|
||||||
## チャート改修履歴
|
## チャート改修履歴
|
||||||
|
|
||||||
|
### uploadMaxSize の追加(2026-08-06, v8.5.9-b)
|
||||||
|
|
||||||
|
nginxの `client_max_body_size` とPHPの `upload_max_filesize`/`post_max_size` を1つの `uploadMaxSize`(デフォルト `"100m"`)で連動させるパラメータを追加。片方だけ上げてももう片方の上限でアップロードが無言で失敗する問題への対応。PHP側は起動時に `/usr/local/etc/php/conf.d/99-uploads.ini` を常時生成(他機能の有効/無効に依存しない)。memory_limitは対象外(別途必要なら将来検討)。
|
||||||
|
|
||||||
|
**対象ファイル**: `values.yaml`, `templates/configmap.yaml`, `templates/deployment.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.9-b.md`
|
||||||
|
|
||||||
### sitemap.xml のContent-Type明示(2026-08-06, v8.5.9-a)
|
### sitemap.xml のContent-Type明示(2026-08-06, v8.5.9-a)
|
||||||
|
|
||||||
`templates/configmap.yaml`(実際に使われているnginx設定。`templates/configmap-nginx.yaml` は `.Values.nginx.enabled` が values.yaml に存在せず常に未出力の死んだファイルなので注意)に `location = /sitemap.xml { types { } default_type "application/xml; charset=utf-8"; ... }` を追加。標準mime.typesでは `.xml` が `text/xml` 扱いでcharset無しになる問題への対応。静的ファイルの場合のみ有効、PHP動的生成には効かない(PHP側でheader()指定が必要)。設定不要・常時有効。
|
`templates/configmap.yaml`(実際に使われているnginx設定。`templates/configmap-nginx.yaml` は `.Values.nginx.enabled` が values.yaml に存在せず常に未出力の死んだファイルなので注意)に `location = /sitemap.xml { types { } default_type "application/xml; charset=utf-8"; ... }` を追加。標準mime.typesでは `.xml` が `text/xml` 扱いでcharset無しになる問題への対応。静的ファイルの場合のみ有効、PHP動的生成には効かない(PHP側でheader()指定が必要)。設定不要・常時有効。
|
||||||
|
|||||||
+1
-1
@@ -2,6 +2,6 @@ apiVersion: v2
|
|||||||
name: phpfpm
|
name: phpfpm
|
||||||
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
|
description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support
|
||||||
type: application
|
type: application
|
||||||
version: 8.5.9-a
|
version: 8.5.9-b
|
||||||
appVersion: "8.5.9"
|
appVersion: "8.5.9"
|
||||||
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
|
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png
|
||||||
|
|||||||
@@ -108,6 +108,14 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx
|
|||||||
| `image.nginx.tag` | Nginxバージョン | `1.29.4-alpine-perl` |
|
| `image.nginx.tag` | Nginxバージョン | `1.29.4-alpine-perl` |
|
||||||
| `service.type` | Serviceタイプ | `LoadBalancer` |
|
| `service.type` | Serviceタイプ | `LoadBalancer` |
|
||||||
| `service.port` | Serviceポート | `80` |
|
| `service.port` | Serviceポート | `80` |
|
||||||
|
| `uploadMaxSize` | アップロード最大サイズ(nginx/PHP両方に反映) | `"100m"` |
|
||||||
|
|
||||||
|
> **📌 アップロードサイズ上限について**
|
||||||
|
> `uploadMaxSize` の値は、nginxの `client_max_body_size` と、PHPの `upload_max_filesize` / `post_max_size` の**両方**に同時に反映されます。片方だけ上げてももう片方の上限で失敗するため、この1つの値で揃える設計です。
|
||||||
|
>
|
||||||
|
> 単位は `k` / `m` / `g`(大文字小文字問わず)が使用できます(例: `"200m"`, `"1g"`)。
|
||||||
|
>
|
||||||
|
> 大きなファイルをPHP側でメモリに読み込んで処理する場合は、PHPの `memory_limit`(デフォルト128M程度)が不足する可能性があります。その場合は `phpEnv` 等ではなくカスタムイメージ、または将来的な設定拡張で対応してください。
|
||||||
|
|
||||||
### 永続化ストレージ
|
### 永続化ストレージ
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,9 @@ data:
|
|||||||
root /var/www/html;
|
root /var/www/html;
|
||||||
index index.php index.html index.htm;
|
index index.php index.html index.htm;
|
||||||
|
|
||||||
|
# アップロード可能な最大サイズ(PHP側のupload_max_filesize/post_max_sizeと連動)
|
||||||
|
client_max_body_size {{ .Values.uploadMaxSize }};
|
||||||
|
|
||||||
# sitemap.xml のContent-Typeを明示的に指定
|
# sitemap.xml のContent-Typeを明示的に指定
|
||||||
# 標準のmime.typesでは .xml は text/xml 扱いでcharsetが付かず、
|
# 標準のmime.typesでは .xml は text/xml 扱いでcharsetが付かず、
|
||||||
# ブラウザやSearch Consoleが正しく解釈できない場合があるため
|
# ブラウザやSearch Consoleが正しく解釈できない場合があるため
|
||||||
|
|||||||
@@ -35,7 +35,15 @@ spec:
|
|||||||
- -c
|
- -c
|
||||||
- |
|
- |
|
||||||
echo "Starting PHP-FPM setup process..."
|
echo "Starting PHP-FPM setup process..."
|
||||||
|
|
||||||
|
# ========================================
|
||||||
|
# アップロードサイズ上限(nginxのclient_max_body_sizeと連動)
|
||||||
|
# ========================================
|
||||||
|
cat > /usr/local/etc/php/conf.d/99-uploads.ini << 'UPLOADS_INI_EOF'
|
||||||
|
upload_max_filesize = {{ .Values.uploadMaxSize }}
|
||||||
|
post_max_size = {{ .Values.uploadMaxSize }}
|
||||||
|
UPLOADS_INI_EOF
|
||||||
|
|
||||||
{{- if or .Values.composer.enabled .Values.selenium.enabled .Values.externalDatabase.enabled .Values.python.enabled }}
|
{{- if or .Values.composer.enabled .Values.selenium.enabled .Values.externalDatabase.enabled .Values.python.enabled }}
|
||||||
# ========================================
|
# ========================================
|
||||||
# APKパッケージのインストール
|
# APKパッケージのインストール
|
||||||
|
|||||||
@@ -22,6 +22,12 @@ service:
|
|||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
port: 80
|
port: 80
|
||||||
|
|
||||||
|
# アップロード可能な最大サイズ
|
||||||
|
# nginxの client_max_body_size と、PHPの upload_max_filesize / post_max_size に
|
||||||
|
# 同じ値を反映する(両方を揃えないと、どちらか一方の上限で失敗するため)
|
||||||
|
# 単位はnginx/PHP共通でk/m/g(大文字小文字問わず)が使用可能(例: "100m", "1g")
|
||||||
|
uploadMaxSize: "100m"
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: false
|
enabled: false
|
||||||
className: ""
|
className: ""
|
||||||
|
|||||||
Reference in New Issue
Block a user