この記事のゴール
この第1回では、以下をゴールにします。
- DockerでPHP環境を用意できる
- PHPファイルをブラウザで表示できる
- echo / 変数 / 文字列 / 配列の入口まで理解する
- 次回以降(フォーム・DB)に進める土台ができる
想定読者
- PHPを少し触ったことがある(完全初心者ではない)
- ただし「Dockerで動かす」「実務っぽい構成」はまだ不安
- Laravelに興味がある(次の連載で学ぶ予定)
なぜDockerで統一するのか?
PHPは、ローカル環境の差が出やすい言語です。
- PHPのバージョン違い
- 拡張モジュールの有無
- ApacheかNginxか
- OSの違い
Dockerで統一すると、この記事通りに進めるだけで
「誰でも同じ環境」
「チームでも同じ環境」
「Laravelにもそのまま繋がる」
このような状態を作ることが可能です。
1. 今回作るDocker構成
今回は最小構成にします。
- PHP 8.2
- Apache(最初は簡単なほうを選びます)
- ローカルの src/ をコンテナにマウントして編集する
※DBは第5回で扱います。
2. ディレクトリを作る
作業用フォルダを作ります。以下はフォルダ構成例になります。
php-basic-series/
├─ docker/
│ └─ php/
│ └─ Dockerfile
├─ src/
│ └─ index.php
└─ docker-compose.yml
3. docker-compose.yml を作成する
プロジェクト直下にymlファイルを作成します。
docker-compose.yml
services:
php:
build: ./docker/php
container_name: php-basic
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
ここでのポイントは次の2つ。
- 8080:80
→ ブラウザで http://localhost:8080 でアクセスできる - ./src:/var/www/html
→ ローカルで編集したPHPが即反映される
4. Dockerfile を作成する
次に Dockerfile を作ります。
docker/php/Dockerfile
FROM php:8.2-apache
RUN apt-get update && apt-get install -y \
git \
unzip \
&& rm -rf /var/lib/apt/lists/*
この時点では最低限の構成にしておきます。
拡張モジュールは後の回で追加します。
5. PHPファイルを作る(index.php)
src/index.php を作成します。
<?php
echo "Hello PHP!";
6. 起動する
プロジェクト直下で以下を実行します。
docker compose up -d --build7. ブラウザで確認する
以下にアクセスします。
http://localhost:8080画面に
Hello PHP!
と表示されたら成功です。
8. ここで「PHPの基本」を最短で整理する
ここまでで、一旦Dockerで動くPHP環境ができましたので、ここからはPHPの最小文法を整理します。
8-1. echo(出力)
PHPは「HTMLを出力する」言語です。echoは一番単純な「出力する」命令になります。
<?php
echo "こんにちは";
8-2. 変数
PHPの変数は $ から始まります。
<?php
$name = "田中";
echo $name;
8-3. 文字列の結合
PHPでは「 . 」 で文字列を結合する事が可能です。
<?php
$name = "田中";
echo "こんにちは、" . $name . "さん";
8-4. 配列(次回のための入口)
PHPでは以下のように配列を扱うことが可能です。配列の詳細については次回以降で解説します。
<?php
$tasks = ["掃除", "買い物", "筋トレ"];
echo $tasks[0];
9. よくあるつまずき
Q1. docker compose up したのに表示されない
- 8080が他のアプリで使われている可能性があります
- その場合は docker-compose.yml のポートを変えます
例
>ports:
- "18080:80"
Q2. PHPを編集しても反映されない
基本的には volumes で即反映されます。
反映されない場合は以下を確認してください。
- src/index.php の場所が合っているか
- ブラウザのキャッシュではないか
10. 次回予告
次回(第2回)は、実務で一番使う部分の解説を行います。
- 配列
- 連想配列
- foreach
- isset / empty の使い分け
そして題材として、タスク管理アプリの制作をしようと思います。
まとめ
この第1回では、
- DockerでPHPを動かす
- PHPの最小文法(echo/変数/配列)を確認する
ところまで進めました。
次回からは、PHPで「データを扱う」力を固めていきます。