PHP 学習:プロになるためのPHPプログラミング入門 サンプル環境構築

公開:2026.05.11(月) 09:46

プロになるためのPHPプログラミング入門 サンプル環境構築

書籍:プロになるためのPHPプログラミング入門
(ISBN:978-4-7741-4972-1)

この書籍のサンプルプログラムを動かすためのコンテナを作成する。
本来であれば新たに専用Dockerコンテナを作成するのが良しと思うが、
今回は「Docker:WSL+Docker+PHP+MySQL+phpMyAdmin環境の作成」で作成したコンテナに環境を作ろうと思う。

DocumentRootは/var/www/html(WSLの./www/html/にマウント)としているが、
compose.yamlに「Apache:エイリアスの設定」の設定を追加し、 サンプルプログラム(prophp_sample)を localhost/prophp_sample で公開するように対応する。

現在の環境
現在の環境は、WSLの "~/docker/php"フォルダ にcompose.yamlなどDocker関連のファイル および
"~/docker/php/www/html"フォルダ にDocumentRoot をマウントしている。

サンプルプログラムの環境
本付属サンプル "prophp_sample.zip" は解凍したのち WSLの "~/docker/php/prophp_sample" フォルダに配置した。
これをコンテナの "/var/www/prophp_sample" フォルダへマウントする。

compose.yaml
services:
    php:
      image: php:8.3-apache
    volumes:
      - ./www/html:/var/www/html
+     - ./prophp_sample:/var/www/prophp_sample
      - ./php.ini-debug:/usr/local/etc/php/php.ini
 :

Apacheのエイリアス設定を行うための prophp_sample.conf ファイルをWSL上に作成する。
prophp_sample.conf
Alias /prophp_sample /var/www/prophp_sample/www

<Directory /var/www/prophp_sample/www>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

prophp_sample.confをコンテナにマウントし、Apacheの設定有効化と起動をcompose.yamlに追加する。
compose.yaml
  services:
    php:
      image: php:8.3-apache
      volumes:
        - ./www/html:/var/www/html
        - ./prophp_sample:/var/www/prophp_sample
        - ./php.ini-debug:/usr/local/etc/php/php.ini
+       - ./prophp_sample.conf:/etc/apache2/conf-available/prophp_sample.conf
      ports:
        - "8080:80"
+     command: >
+       sh -c "a2enconf prophp_sample && apache2-foreground"
 :

あとは "docker copmose up -d" でコンテナを起動、 試しに "~/docker/php/prophp_sample/phpinfo.php" ファイルを作成、"localhost:8080/prophp_sample/phpinfo.php" でアクセスできればOK

参考(全体ソース)

compose.yaml
services:
  php:
    image: php:8.3-apache
    volumes:
      - ./www/html:/var/www/html
      - ./prophp_sample:/var/www/prophp_sample
      - ./php.ini-debug:/usr/local/etc/php/php.ini
      - ./prophp_sample.conf:/etc/apache2/conf-available/prophp_sample.conf
    ports:
      - "8080:80"
    command: >
      sh -c "a2enconf prophp_sample && apache2-foreground"

  db:
    image: mysql:8.0
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
  
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db

"PHP 学習"

0 件のコメント:

その他の記事