fix: 旧Webルートの composer.json を自動移行、mbstring依存を自動追加 (v8.5.6-b)
Helm Chart Release / release-chart (push) Successful in 8s

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 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 14:58:47 +09:00
co-authored by Claude Fable 5
parent 8ff43615fa
commit e294f909c1
5 changed files with 68 additions and 3 deletions
+45
View File
@@ -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)
+8
View File
@@ -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` サブパスをマウントして永続化する。
+1 -1
View File
@@ -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
+2
View File
@@ -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を使用
+12 -2
View File
@@ -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..."