From e294f909c1653741f269b43bb62d1d0b7f956250 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 19 Jul 2026 14:58:47 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A7Web=E3=83=AB=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=AE=20composer.json=20=E3=82=92=E8=87=AA=E5=8B=95?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E3=80=81mbstring=E4=BE=9D=E5=AD=98=E3=82=92?= =?UTF-8?q?=E8=87=AA=E5=8B=95=E8=BF=BD=E5=8A=A0=20(v8.5.6-b)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v8.5.6-a で導入先を /var/www に変更した際、既存の composer.json が 旧Webルート /var/www/html に残っている環境でインストールが スキップされる問題を修正。起動時に composer.json / composer.lock / vendor/ を workingDir へ自動移行する。 また additionalPhpExtensions に mbstring 指定時、Alpineでのビルドに 必要な oniguruma-dev を自動追加(configure: error: Package requirements (oniguruma) were not met 対策)。 Co-Authored-By: Claude Fable 5 --- CHANGELOG-8.5.6-b.md | 45 +++++++++++++++++++++++++++++++++++++++ CLAUDE.md | 8 +++++++ Chart.yaml | 2 +- README.md | 2 ++ templates/deployment.yaml | 14 ++++++++++-- 5 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 CHANGELOG-8.5.6-b.md 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..."