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