feat: Composer導入先をWebルート外(/var/www)に変更 (v8.5.6-a)
Helm Chart Release / release-chart (push) Successful in 5s
Helm Chart Release / release-chart (push) Successful in 5s
従来は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 <noreply@anthropic.com>
This commit is contained in:
@@ -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)
|
||||||
@@ -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)
|
### phpEnv — 汎用 PHP 環境変数サポート(2026-04-17)
|
||||||
|
|
||||||
`values.yaml` に `phpEnv` セクションを追加し、DB 接続情報と同様に任意のキーと値を PHP-FPM コンテナの環境変数として渡せるようにした。
|
`values.yaml` に `phpEnv` セクションを追加し、DB 接続情報と同様に任意のキーと値を PHP-FPM コンテナの環境変数として渡せるようにした。
|
||||||
|
|||||||
+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.6
|
version: 8.5.6-a
|
||||||
appVersion: "8.5.6"
|
appVersion: "8.5.6"
|
||||||
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
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ kubectl logs -l app.kubernetes.io/name=phpfpm -c nginx
|
|||||||
| パラメータ | 説明 | デフォルト |
|
| パラメータ | 説明 | デフォルト |
|
||||||
|-----------|------|-----------|
|
|-----------|------|-----------|
|
||||||
| `composer.enabled` | Composer有効化 | `false` |
|
| `composer.enabled` | Composer有効化 | `false` |
|
||||||
|
| `composer.workingDir` | Composer導入先ディレクトリ(`{workingDir}/vendor/autoload.php`) | `"/var/www"` |
|
||||||
| `composer.packages` | インストールパッケージ | `[]` |
|
| `composer.packages` | インストールパッケージ | `[]` |
|
||||||
| `composer.useComposerJson` | composer.json使用 | `false` |
|
| `composer.useComposerJson` | composer.json使用 | `false` |
|
||||||
| `composer.composerJson` | composer.json内容 | `""` |
|
| `composer.composerJson` | composer.json内容 | `""` |
|
||||||
@@ -237,6 +238,17 @@ persistence:
|
|||||||
size: 2Gi
|
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を使用
|
### 例3: composer.jsonを使用
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -330,7 +342,7 @@ resources:
|
|||||||
**PHPコード例**:
|
**PHPコード例**:
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php
|
||||||
require_once '/var/www/html/vendor/autoload.php';
|
require_once '/var/www/vendor/autoload.php';
|
||||||
|
|
||||||
use Facebook\WebDriver\Remote\RemoteWebDriver;
|
use Facebook\WebDriver\Remote\RemoteWebDriver;
|
||||||
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
||||||
|
|||||||
@@ -106,8 +106,10 @@ spec:
|
|||||||
{{- if or .Values.composer.enabled .Values.selenium.enabled }}
|
{{- if or .Values.composer.enabled .Values.selenium.enabled }}
|
||||||
echo "Installing Composer..."
|
echo "Installing Composer..."
|
||||||
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||||
|
|
||||||
cd /var/www/html
|
# Composer導入先(デフォルトはWebルート外の /var/www)
|
||||||
|
mkdir -p {{ .Values.composer.workingDir | default "/var/www" }}
|
||||||
|
cd {{ .Values.composer.workingDir | default "/var/www" }}
|
||||||
|
|
||||||
{{- if .Values.composer.enabled }}
|
{{- if .Values.composer.enabled }}
|
||||||
# ユーザー定義のComposer設定
|
# ユーザー定義のComposer設定
|
||||||
@@ -190,6 +192,13 @@ spec:
|
|||||||
- name: app-storage
|
- name: app-storage
|
||||||
mountPath: /var/www/html
|
mountPath: /var/www/html
|
||||||
subPath: html
|
subPath: html
|
||||||
|
{{- $composerDir := .Values.composer.workingDir | default "/var/www" }}
|
||||||
|
{{- if and (or .Values.composer.enabled .Values.selenium.enabled) (ne $composerDir "/var/www/html") }}
|
||||||
|
# Composer導入先をPVCに永続化(Pod再起動時のvendor再構築を回避)
|
||||||
|
- name: app-storage
|
||||||
|
mountPath: {{ $composerDir }}
|
||||||
|
subPath: composer
|
||||||
|
{{- end }}
|
||||||
{{- if and .Values.composer.enabled .Values.composer.useComposerJson }}
|
{{- if and .Values.composer.enabled .Values.composer.useComposerJson }}
|
||||||
- name: composer-config
|
- name: composer-config
|
||||||
mountPath: /tmp/composer-init
|
mountPath: /tmp/composer-init
|
||||||
|
|||||||
+8
-1
@@ -84,7 +84,14 @@ nginx:
|
|||||||
composer:
|
composer:
|
||||||
# Composerを使用するかどうか
|
# Composerを使用するかどうか
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
|
# Composerの導入先ディレクトリ(composer.json / vendor の配置先)
|
||||||
|
# デフォルトはWebルート(/var/www/html)の外の /var/www に導入し、
|
||||||
|
# vendor/ や composer.json がWeb経由で公開されるのを防ぐ
|
||||||
|
# PHPコードからは require_once '/var/www/vendor/autoload.php'; で読み込む
|
||||||
|
# 旧来の動作(Webルート直下に導入)へ戻す場合は "/var/www/html" を指定
|
||||||
|
workingDir: "/var/www"
|
||||||
|
|
||||||
# Composerでインストールするパッケージ
|
# Composerでインストールするパッケージ
|
||||||
# packages配列が空の場合、composer.jsonを使用
|
# packages配列が空の場合、composer.jsonを使用
|
||||||
packages: []
|
packages: []
|
||||||
|
|||||||
Reference in New Issue
Block a user