1. 概要
最新のPHP8系をローカル環境でサクッと動かしてみます。
paiza.ioのような便利ツールもありますが、もう少し込み入った処理をテストしたい場面もあるはずです。(例:ファイル入出力やライブラリの読み込み)
今回は、自分用の環境を簡単に用意するための備忘録として、DockerでPHP動作環境を作成します。
2. ファイル構成
(root)
├app
│ ├ csv_read.php
│ └ sample.csv
│
└ docker-compose.yml
3. docker-compose.ymlファイルを用意
version: "3.8"
services:
php:
container_name: php82
image: php:8.2-cli
volumes:
- ./app:/php/src
working_dir: /php/src
tty: true
4. コンテナをビルドして立ち上げる
docker compose up -d --build
起動していることを確認
docker ps
PHP8.2環境ができていることを確認
# コンテナへ入る
$ docker exec -it php82 bash
# インストールされているPHPバージョンの確認
$ php -v
5. PHPスクリプトを動かしてみる
せっかくなので、paizaでは試せないCSVファイルの読み込みを試してみます。
<?php
// CSVファイルの読み込み
$file = fopen('./sample.csv', 'r');
// 船員たちを格納
$members = [];
// ヘッダーの読み込み
$headers = fgetcsv($file);
// 1人分ずつ読み込み
while ($line = fgetcsv($file)) {
$row = [];
foreach ($line as $index => $value) {
$key = $headers[$index];
$row[$key] = $value;
}
$members[] = $row;
}
// ファイルを閉じる
fclose($file);
// 出力
print_r($members);
id,name,position
1,モンキー・D・ルフィ,船長
2,ロロノア・ゾロ,戦闘員
3,ナミ,航海士
4,ウソップ,狙撃手
5,ヴィンスモーク・サンジ,コック
6,トニートニー・チョッパー,船医
7,ニコ・ロビン,考古学者
8,フランキー,船大工
9,ブルック,音楽家
10,ジンベエ,操舵手
コンテナへ入る
docker exec -it php82 bash
実行
php csv_read.php
出力結果
Array
(
[0] => Array
(
[id] => 1
[name] => モンキー・D・ルフィ
[position] => 船長
)
[1] => Array
(
[id] => 2
[name] => ロロノア・ゾロ
[position] => 戦闘員
)
[2] => Array
(
[id] => 3
[name] => ナミ
[position] => 航海士
)
[3] => Array
(
[id] => 4
[name] => ウソップ
[position] => 狙撃手
)
[4] => Array
(
[id] => 5
[name] => ヴィンスモーク・サンジ
[position] => コック
)
[5] => Array
(
[id] => 6
[name] => トニートニー・チョッパー
[position] => 船医
)
[6] => Array
(
[id] => 7
[name] => ニコ・ロビン
[position] => 考古学者
)
[7] => Array
(
[id] => 8
[name] => フランキー
[position] => 船大工
)
[8] => Array
(
[id] => 9
[name] => ブルック
[position] => 音楽家
)
[9] => Array
(
[id] => 10
[name] => ジンベエ
[position] => 操舵手
)
)
6. コンテナの停止・削除
今回は用済みだが、また使うかもしれない場合
docker compose stop
もう使うことがない場合(例:新しいバージョンが出た、cli以外のコンテナを使いたい等)
docker compose down -v
7. 最後に
今回はPHPスクリプトを動かすための最低限の構築を行いました。
簡易的なローカル環境なので、composerによるライブラリ導入やデータベース構築・連携といったことも自由にできます。
簡単なテストや不具合調査にお役立てください。
8. 参考
投稿者プロフィール
-
学んだことをアウトプットしていきます!
好きなこと:音楽鑑賞🎵 / ドライブ🚗 / サウナ🧖
最新の投稿
- 【Next.js】2024年8月10日【Next.js】ローカル環境をSSL化してみる
- 【PHP】2024年6月13日【PHP】PHP7から8への移行のために知るべきこと
- 【PHP】2024年6月10日【PHP】PHP8の新機能を具体的なコードで理解する
- 【Docker】2024年6月4日【Docker】Vue2と3 + TypeScript開発環境を構築する