👻

サクッと作れるPHP環境(Docker/MySQL/phpMyAdmin/Composer/Xdebug/PHP_CodeSniffer)

2023/10/29に公開
1

環境概要

  • Docker
  • PHP:8.2-apache
  • MySQL:8.0
  • phpMyAdmin:latest
  • VSCode
  • Xdebug
  • Composer
  • PHP_CodeSniffer

プロジェクトのGitHubリポジトリ

GitHubリポジトリ:https://github.com/OBookBook/php-docker-env
リポジトリをクローンするには、次のコマンドを実行してください。

git clone https://github.com/OBookBook/php-docker-env.git

ディレクトリ構造とファイルの役割

プロジェクトのディレクトリ構造と各ファイルの役割は以下の通りです。

├── .vscode
│   └── launch.json # VSCodeデバッグ構成を定義するファイル(Xdebug設定)
├── Dockerfile
├── README.md
├── composer.json # PHP_CodeSnifferの設定
├── docker-compose.yml # Dockerコンテナの設定とphp.iniのマウント
├── index.php
└── php.ini # Xdebugの設定

Dockerの設定

docker-compose.ymlを作成

docker-compose.ymlファイルを編集し、以下の内容を設定してください。セキュリティ上の注意を怠らないようにしてください。

version: "3.7"
services:
  db:
    image: mysql:8.0
    container_name: mysql
    restart: always
    environment:
      # ルートユーザのパスワードを各自で設定してください
      MYSQL_ROOT_PASSWORD: root_password_kimetene
      # データベース名を各自で設定してください
      MYSQL_DATABASE: db_local
      # データベース接続ユーザ名を各自で設定してください
      MYSQL_USER: db_user
      # データベース接続パスワードを各自で設定してください
      MYSQL_PASSWORD: db_password_kimetene
  php:
    build: ./
    container_name: php
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini
      - ./:/var/www/html
    ports:
      - 9080:80
    depends_on:
      - db
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: phpmyadmin
    restart: always
    depends_on:
      - db
    ports:
      - 9090:80

Dockerfileを作成

Dockerfileを作成して、以下の内容を設定してください。

FROM php:8.2-apache

# Xdebug 環境構築
RUN pecl install xdebug && \
  docker-php-ext-enable xdebug

# Docker 公式の Composer イメージ を使用
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Composer パッケージ管理する為の環境構築
RUN apt-get update && \
  apt-get install -y sudo git
# Composerの設定
RUN echo 'export PATH="$PATH:/root/.composer/vendor/bin"' >> /root/.bashrc
# Composerキャッシュのクリア
RUN composer global clear-cache

# php_codesniffer を使うための環境構築
RUN composer global require --no-interaction "squizlabs/php_codesniffer=*" && \
  composer require --dev --no-interaction squizlabs/php_codesniffer

Compoerの設定

composer.jsonを作成 (php_codesniffer)

composer.jsonファイルを作成して、必要なパッケージを追加してください。
PHP_CodeSnifferを使用します。

{
    "require-dev": {
        "squizlabs/php_codesniffer": "^3.7"
    }
}

Xdebugの設定

php.iniを作成

php.iniファイルを作成して、Xdebugの設定を追加してください。

[xdebug]
xdebug.client_host = host.docker.internal
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 0
xdebug.remote_handler = "dbgp"
xdebug.client_port = 9003

VSCodeで拡張機能「PHP Debug」をインストール

PHP Debugで検索して、ダウンロードして下さい。

VSCodeで「launch.json」を作成

PHP DebugをインストールしたらVSCodeの左側(サイドバー)にデバッグボタンが出現します。
ボタンを押下して、launch.jsonを作成して下さい。

launch.jsonでxdebugの設定

Dockerで作成した開発コンテナとXdebugを繋げます。設定の詳細はコメントの通りです。

    {
      "name": "Listen for Xdebug",
      "type": "php",
      "request": "launch",
      // php.iniファイルのxdebug.client_port = 9003 と同じPORTを指定して下さい!
      "port": 9003,
      // Xdebugが動かなかったら、PATHの設定を見直してみて下さい!
      "pathMappings": {
        "/var/www/html": "${workspaceRoot}"
        // "/var/www/html": "c:/Users/***/***/***/***/***/" 絶対バスで指定したら確実に動きます。
      }
    }

使い方

Dockerファイルがあるプロジェクトへ移動

  1. Dockerを起動し、コンテナを作成するコマンドです。
docker-compose up -d

Webサーバが正常に動いているか確認

本プロジェクトのトップページ(index.php)です。

2. 以下のURLでアクセスできます:http://localhost:9080/

phpMyAdminが正常に動いているか確認


3. 以下のURLでアクセスできます:http://localhost:9090/

Dockerコンテナにログイン

  1. Dockerコンテナに入るコマンドです。
docker container exec -it php bash

Composerでphp_codesnifferをダウンロード

  1. Composerを使用してパッケージをインストールするコマンドです。
composer install

静的解析(PHP_CodeSniffer)ツールの使用方法

  1. index.phpをPSR-12に従って静的解析するコマンドです。
./vendor/bin/phpcs --standard=PSR12 ./index.php

Xdebugの使用方法

  1. VSCodeでデバッグ実行をする手順は以下の通りです。
  • index.php ファイルにブレークポイントを設定します。
  • VSCodeでデバッグ実行を開始します。
  • プラウザからindex.phpにアクセスします。:http://localhost:9080/
GitHubで編集を提案

Discussion

kaockkaock

参考にさせて頂きました。
ありがとうございました!
PHPにpdo_mysqlを追加した方が良いかと思いました。