From 8ff43615fa0f9e0575698c351655298219a47a3e Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 19 Jul 2026 14:29:23 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Composer=E5=B0=8E=E5=85=A5=E5=85=88?= =?UTF-8?q?=E3=82=92Web=E3=83=AB=E3=83=BC=E3=83=88=E5=A4=96=EF=BC=88/var/w?= =?UTF-8?q?ww=EF=BC=89=E3=81=AB=E5=A4=89=E6=9B=B4=20(v8.5.6-a)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 従来はWebルート /var/www/html 直下にComposerを導入していたため、 composer.json / composer.lock / vendor/ がWeb経由で公開され、 依存パッケージ情報の漏洩などのセキュリティリスクがあった。 - values.yaml: composer.workingDir を追加(デフォルト: /var/www) - templates/deployment.yaml: 作業ディレクトリを workingDir に変更、 Webルート以外の場合はPVCの composer サブパスをマウントして永続化 - README.md: パラメータ説明・autoload読み込みパスの解説を追加 - Chart.yaml: 8.5.6-a(手動リリース) - CHANGELOG-8.5.6-a.md: 変更内容を記録 PHP側は require_once '/var/www/vendor/autoload.php'; で読み込む。 旧動作へは composer.workingDir: "/var/www/html" で復帰可能。 Co-Authored-By: Claude Fable 5 --- CHANGELOG-8.5.6-a.md | 50 +++++++++++++++++++++++++++++++++++++++ CLAUDE.md | 8 +++++++ Chart.yaml | 2 +- README.md | 14 ++++++++++- templates/deployment.yaml | 13 ++++++++-- values.yaml | 9 ++++++- 6 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 CHANGELOG-8.5.6-a.md diff --git a/CHANGELOG-8.5.6-a.md b/CHANGELOG-8.5.6-a.md new file mode 100644 index 0000000..b314300 --- /dev/null +++ b/CHANGELOG-8.5.6-a.md @@ -0,0 +1,50 @@ +# Changelog - Version 8.5.6-a + +## 変更点 + +### Composer導入先をWebルート外に変更(セキュリティ改善) + +従来、Composerは Webルート `/var/www/html` 直下に導入されており、`composer.json` / `composer.lock` / `vendor/` がWeb経由で公開される状態でした。これらのファイルは公開する必要がなく、依存パッケージ構成の漏洩などセキュリティリスクとなるため、デフォルトの導入先をWebルート外の `/var/www` に変更しました。 + +#### 主な変更点 + +1. **values.yaml** + - `composer.workingDir` パラメータを追加(デフォルト: `"/var/www"`) + - Composerの導入先ディレクトリを任意のパスに変更可能 + +2. **templates/deployment.yaml** + - Composer実行時の作業ディレクトリを `composer.workingDir` に変更(`mkdir -p` で自動作成) + - `workingDir` がWebルート(`/var/www/html`)以外の場合、PVCの `composer` サブパスを `workingDir` にマウントし、vendor類を永続化(Pod再起動時の再構築を回避、従来と同等の永続化動作を維持) + +3. **README.md** + - `composer.workingDir` のパラメータ説明を追加 + - Composer導入先とautoload読み込みパスの解説を追加 + - Selenium使用例の `require_once` パスを更新 + +## PHPコードでの利用 + +```php +// 新: デフォルトの読み込みパス +require_once '/var/www/vendor/autoload.php'; +``` + +## 互換性 + +- **注意**: PHPコード内で `require_once '/var/www/html/vendor/autoload.php';` や相対パス `vendor/autoload.php` を使用している場合は、パスの修正が必要です。 +- 旧バージョンと同じ動作(Webルート直下に導入)へ戻す場合は、以下を指定してください: + +```yaml +composer: + workingDir: "/var/www/html" +``` + +- 既存のPVC内 `html/vendor` はそのまま残ります。不要であれば手動で削除してください。 + +## セキュリティ + +- `vendor/` や `composer.json` / `composer.lock` がWebサーバー(Nginx)から配信されなくなり、依存パッケージ情報の漏洩や、vendor内スクリプトへの直接アクセスのリスクを排除できます。 + +--- + +**リリース日**: 2026-07-19 +**担当**: プロサーバーエンジニア(Claude) diff --git a/CLAUDE.md b/CLAUDE.md index 89e973c..19454aa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -22,6 +22,14 @@ Raspberry Pi などのベアメタルで稼働することを想定した、Kube ## チャート改修履歴 +### composer.workingDir — Composer導入先のWebルート外への変更(2026-07-19, v8.5.6-a) + +Composerの導入先をWebルート `/var/www/html` からWebルート外の `/var/www` に変更し、`vendor/` や `composer.json` がWeb経由で公開されないようにした。`values.yaml` の `composer.workingDir` で導入先を変更可能(旧動作に戻すには `"/var/www/html"` を指定)。導入先がWebルート以外の場合、PVCの `composer` サブパスをマウントして永続化する。 + +PHP側の読み込みは `require_once '/var/www/vendor/autoload.php';`。 + +**対象ファイル**: `values.yaml`, `templates/deployment.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.6-a.md` + ### phpEnv — 汎用 PHP 環境変数サポート(2026-04-17) `values.yaml` に `phpEnv` セクションを追加し、DB 接続情報と同様に任意のキーと値を PHP-FPM コンテナの環境変数として渡せるようにした。 diff --git a/Chart.yaml b/Chart.yaml index e13ee3a..bbaf005 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -2,6 +2,6 @@ apiVersion: v2 name: phpfpm description: Nginx + PHP-FPM Helm Chart with external DB and optional Selenium support type: application -version: 8.5.6 +version: 8.5.6-a appVersion: "8.5.6" icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/330px-PHP-logo.svg.png diff --git a/README.md b/README.md index 47ea974..a045311 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,7 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx | パラメータ | 説明 | デフォルト | |-----------|------|-----------| | `composer.enabled` | Composer有効化 | `false` | +| `composer.workingDir` | Composer導入先ディレクトリ(`{workingDir}/vendor/autoload.php`) | `"/var/www"` | | `composer.packages` | インストールパッケージ | `[]` | | `composer.useComposerJson` | composer.json使用 | `false` | | `composer.composerJson` | composer.json内容 | `""` | @@ -237,6 +238,17 @@ persistence: size: 2Gi ``` +> **📌 Composerの導入先について** +> Composerパッケージはデフォルトで**Webルート外**の `/var/www` に導入されます(`composer.workingDir` で変更可能)。 +> `vendor/` や `composer.json` がWeb経由で公開されないため、情報漏洩などのセキュリティリスクを回避できます。 +> +> PHPコードからは以下のように読み込みます: +> ```php +> require_once '/var/www/vendor/autoload.php'; +> ``` +> +> 旧バージョン(Webルート直下 `/var/www/html` に導入)と同じ動作に戻す場合は `composer.workingDir: "/var/www/html"` を指定してください。 + ### 例3: composer.jsonを使用 ```yaml @@ -330,7 +342,7 @@ resources: **PHPコード例**: ```php