0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

「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


原因

.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で調べると以下のことが分かりました。

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

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


WWWGROUPWWWUSER の役割

WWWGROUPWWWUSER は、主に以下の目的で使用されます:

  1. Laravel のキャッシュやログのファイル所有権を正しく設定する

    • Laravel のアプリケーションでは、storage ディレクトリ内にキャッシュやログが保存されます。これらのファイルをホストシステム上のユーザーとグループに合わせるために、WWWGROUPWWWUSER を指定します。
    • 通常、コンテナ内で動作する PHP (Apache/Nginx) プロセスの実行ユーザーを、ホスト側のユーザーと一致させるために使います。
  2. Docker ボリュームのファイルアクセス権を適切に設定する

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

例:

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

phpMyAdmin における役割

  • phpMyAdmin 自体は WWWGROUPWWWUSER を必要としません
    • phpMyAdmin はデータベースにアクセスするためのウェブインターフェースツールであり、これらの変数とは無関係です。
    • phpMyAdmin の動作には、MySQL サーバー (db サービス) への接続情報 (PMA_HOSTPMA_PORT) が必要です。

phpMyAdmin をセットアップする際に必要な設定例:

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_HOSTPMA_PORT が正しく設定されていれば、phpMyAdmin は正常に動作します。


まとめ

  • WWWGROUPWWWUSER は Laravel や PHP のファイル権限管理に関連する変数です。
  • phpMyAdmin を使用する際には、これらの変数は不要です。
  • phpMyAdmin のセットアップに必要なのは、MySQL サーバーの接続設定(PMA_HOST, PMA_PORT など)だけです。

補足

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?