diff --git a/CHANGELOG-8.5.6-b.md b/CHANGELOG-8.5.6-b.md new file mode 100644 index 0000000..6f39279 --- /dev/null +++ b/CHANGELOG-8.5.6-b.md @@ -0,0 +1,45 @@ +# Changelog - Version 8.5.6-b + +## 修正 + +### 旧Webルートにある既存 composer.json の自動移行 + +v8.5.6-a で Composer導入先を `/var/www/html` から `/var/www`(`composer.workingDir`)に変更しましたが、 +`packages` / `useComposerJson` を使わずに既存の `composer.json` を利用していた環境では、 +旧Webルートに残った `composer.json` を検出できず、 +「No composer configuration found, skipping package installation」でインストールがスキップされる問題がありました。 + +**対応**: 起動時に `workingDir` に `composer.json` が無く、旧Webルート `/var/www/html` に存在する場合、 +以下のファイルを自動的に `workingDir` へ移行してから `composer install` を実行するようにしました。 + +- `composer.json` +- `composer.lock`(存在する場合) +- `vendor/`(存在する場合 — 移動によりWebルートから排除され、公開リスクも解消されます) + +移行はWebルートから該当ファイルが無くなるため一度だけ実行され、以降の再起動では通常フローで動作します。 + +### mbstring 拡張の依存パッケージ自動追加 + +`composer.additionalPhpExtensions` に `mbstring` を指定した場合、 +Alpine 上でのビルドに必要な `oniguruma-dev` が無く +`configure: error: Package requirements (oniguruma) were not met` で失敗していました。 + +**対応**: GD拡張と同様に、`mbstring` 指定時は `oniguruma-dev` を自動的にAPKパッケージへ追加するようにしました。 + +## アップグレード手順 + +```bash +helm repo update +helm upgrade <リリース名> cafepieters/phpfpm --version 8.5.6-b -f values.yaml +``` + +Pod再起動時に自動移行が実行されます。PHPコード側の読み込みパスの更新を忘れずに行ってください: + +```php +require_once '/var/www/vendor/autoload.php'; +``` + +--- + +**リリース日**: 2026-07-19 +**担当**: プロサーバーエンジニア(Claude) diff --git a/CLAUDE.md b/CLAUDE.md index 19454aa..6e1e2a8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -22,6 +22,14 @@ Raspberry Pi などのベアメタルで稼働することを想定した、Kube ## チャート改修履歴 +### 旧composer.jsonの自動移行 + mbstring依存の自動追加(2026-07-19, v8.5.6-b) + +v8.5.6-a のフォローアップ。起動時に `workingDir` に `composer.json` が無く旧Webルート `/var/www/html` にある場合、`composer.json` / `composer.lock` / `vendor/` を自動移行する。また `additionalPhpExtensions` に `mbstring` 指定時、ビルドに必要な `oniguruma-dev` を自動追加(GDと同じ仕組み)。 + +なお、PVC上の `composer/html/`(空ディレクトリ)はネストマウントのマウントポイント作成による正常な副産物で、実害なし。 + +**対象ファイル**: `templates/deployment.yaml`, `README.md`, `Chart.yaml`, `CHANGELOG-8.5.6-b.md` + ### 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` サブパスをマウントして永続化する。 diff --git a/Chart.yaml b/Chart.yaml index bbaf005..3755b97 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-a +version: 8.5.6-b 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 a045311..3576990 100644 --- a/README.md +++ b/README.md @@ -248,6 +248,8 @@ persistence: > ``` > > 旧バージョン(Webルート直下 `/var/www/html` に導入)と同じ動作に戻す場合は `composer.workingDir: "/var/www/html"` を指定してください。 +> +> **旧バージョンからのアップグレード**: 旧Webルートに `composer.json` / `composer.lock` / `vendor/` が残っている場合、Pod起動時に自動的に `workingDir` へ移行されます(v8.5.6-b以降)。 ### 例3: composer.jsonを使用 diff --git a/templates/deployment.yaml b/templates/deployment.yaml index 7273026..f81cb2b 100644 --- a/templates/deployment.yaml +++ b/templates/deployment.yaml @@ -64,13 +64,16 @@ spec: {{- end }} {{- end }} - # GD拡張の依存パッケージを自動的に追加 + # PHP拡張(gd / mbstring)の依存パッケージを自動的に追加 {{- if .Values.composer.additionalPhpExtensions }} for ext in {{ join " " .Values.composer.additionalPhpExtensions }}; do if [ "$ext" = "gd" ]; then echo "GD extension detected, adding required dependencies..." APK_PACKAGES="$APK_PACKAGES libpng-dev libjpeg-turbo-dev freetype-dev" - break + fi + if [ "$ext" = "mbstring" ]; then + echo "mbstring extension detected, adding required dependencies..." + APK_PACKAGES="$APK_PACKAGES oniguruma-dev" fi done {{- end }} @@ -143,6 +146,13 @@ spec: {{- end }} {{- else }} + # 旧Webルート(/var/www/html)に composer.json がある場合は移行(v8.5.6-a以前からのアップグレード対応) + if [ ! -f composer.json ] && [ -f /var/www/html/composer.json ]; then + echo "Migrating legacy composer files from /var/www/html to $(pwd)..." + mv /var/www/html/composer.json ./composer.json + if [ -f /var/www/html/composer.lock ]; then mv /var/www/html/composer.lock ./composer.lock; fi + if [ -d /var/www/html/vendor ]; then mv /var/www/html/vendor ./vendor; fi + fi # composer.jsonが既に存在する場合はそれを使用 if [ -f composer.json ]; then echo "Found existing composer.json, running composer install..."