phpMyAdominのログインエラー

# はじめに
「Laravelの教科書」を参考に学習を始めました。ところが、環境設定でphpMyAdminを使えるようにする際、エラーが発生し解消に苦戦したため、備忘録として残します。

---
# 開発環境
- pc windows11
- PHP 8.3.16 
- Laravel Framework 11.38.2
- dockerを使用

--- 
#現象
1.「Laravelの教科書」を参考にWSL、Ubuntu、Dockerをインストールし、Laravelプロジェクトを作成する。
2.  プロジェクトファイル内のdocker-compose.ymlファイル、.envファイルを編集しphpMyAdmin用の設定を加える。
3. 編集後、Laravel Sailを起動しブラウザで http://localhost:8080/ を表示する。
4. 2で設定したユーザー名、パスワードを入力するとしログインしようとすると画像のようなエラーが出る。

![スクリーンショット 2025-01-19 234422.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3796867/f15834c3-cad7-8d31-b1d0-3d4857567e53.png)

--- 
# 原因
.envファイルの記述漏れでした。
docker-compose.ymlファイルには以下のように記述していました。
``` docker-compose.yml
services:
    laravel.test:
        build:
            context: './vendor/laravel/sail/runtimes/8.4'
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: 'sail-8.4/app'
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
            IGNITION_LOCAL_SITES_PATH: '${PWD}'
    ---以下省略
```
この中で` WWWGROUP: '${WWWGROUP}'`と `WWWUSER: '${WWWUSER}'`の記述がありますが、`.env`ファイルには記述がありませんでした。
以下のように.envファイルの最終行に書き加えることで解決することができました。
``` .env
WWWGROUP=1000
WWWUSER=1000
```
---
# 追記
この` WWWGROUP: '${WWWGROUP}'`と `WWWUSER: '${WWWUSER}'`についてChatGPTで調べると以下のことが分かりました。   

`WWWGROUP` と `WWWUSER` は **phpMyAdmin を使用するために必須ではありません**。これらの環境変数は主に **Laravel プロジェクト内で PHP アプリケーションがファイルの所有権やパーミッションを適切に扱うため** に使用されます。

以下に `WWWGROUP` と `WWWUSER` の役割と、phpMyAdmin の関係について詳しく説明します。

---

## **`WWWGROUP` と `WWWUSER` の役割**
`WWWGROUP` と `WWWUSER` は、主に以下の目的で使用されます：
1. **Laravel のキャッシュやログのファイル所有権を正しく設定する**
   - Laravel のアプリケーションでは、`storage` ディレクトリ内にキャッシュやログが保存されます。これらのファイルをホストシステム上のユーザーとグループに合わせるために、`WWWGROUP` と `WWWUSER` を指定します。
   - 通常、コンテナ内で動作する PHP (Apache/Nginx) プロセスの実行ユーザーを、ホスト側のユーザーと一致させるために使います。

2. **Docker ボリュームのファイルアクセス権を適切に設定する**
   - Docker コンテナでマウントしたボリューム内のファイルにアクセスできるように、UID (ユーザーID) と GID (グループID) をホスト環境に合わせます。

例：
```yaml
services:
  app:
    build:
      context: .
    environment:
      WWWGROUP: "${WWWGROUP}"  # ホストシステムのグループID
      WWWUSER: "${WWWUSER}"    # ホストシステムのユーザーID
```

---

## **phpMyAdmin における役割**
- **phpMyAdmin 自体は `WWWGROUP` や `WWWUSER` を必要としません**。
  - phpMyAdmin はデータベースにアクセスするためのウェブインターフェースツールであり、これらの変数とは無関係です。
  - phpMyAdmin の動作には、MySQL サーバー (`db` サービス) への接続情報 (`PMA_HOST` や `PMA_PORT`) が必要です。

### phpMyAdmin をセットアップする際に必要な設定例：
```yaml
services:
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      PMA_PORT: 3306

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: example_db
```

この設定では、`PMA_HOST` や `PMA_PORT` が正しく設定されていれば、phpMyAdmin は正常に動作します。

---

## **まとめ**
- **`WWWGROUP` と `WWWUSER` は Laravel や PHP のファイル権限管理に関連する変数です。**
- **phpMyAdmin を使用する際には、これらの変数は不要です。**
- phpMyAdmin のセットアップに必要なのは、MySQL サーバーの接続設定（`PMA_HOST`, `PMA_PORT` など）だけです。

---

### **補足**
もし Laravel プロジェクトをセットアップする際にエラーが発生し、`WWWGROUP` や `WWWUSER` が必要であれば、それを `.env` ファイルに追加してください。ただし、phpMyAdmin の動作には影響しません。