📖
phar-composerで依存関係込みのphar作成
phar-composerで依存関係込みのphar作成
はじめに
PHP で作成したコマンドラインツールやスクリプトを、依存関係込みで簡単に配布・実行したいと思ったことはありませんか?本記事では、Docker 環境と phar-composer を使用して、依存関係を含む実行可能な phar ファイルを作成する方法を紹介します。
プロジェクト構成
.
├── Dockerfile
├── composer.json
├── docker-compose.yml
├── src
│ └── index.php
└── vendor
環境構築
Dockerfile の作成
PHP 8.2 の環境を Docker で構築します。phar-composer もここでインストールします。
FROM php:8.2-cli
RUN apt-get update && apt-get install -y \
git \
unzip \
&& rm -rf /var/lib/apt/lists/*
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN git clone https://github.com/clue/phar-composer.git /usr/local/phar-composer \
&& cd /usr/local/phar-composer \
&& composer install \
&& ln -s /usr/local/phar-composer/bin/phar-composer /usr/local/bin/phar-composer
WORKDIR /app
RUN echo "phar.readonly = Off" >> /usr/local/etc/php/conf.d/phar.ini
docker-compose.yml の作成
Docker 環境を簡単に管理するための docker-compose ファイルを作成します。
version: '3'
services:
php:
build: .
volumes:
- .:/app
working_dir: /app
command: tail -f /dev/null
プロジェクトの設定
composer.json の設定
プロジェクトの依存関係と設定を管理する composer.json ファイルを作成します。
{
"name": "sample-phar-composer",
"description": "phar-composer sample",
"authors": [
{
"name": "Your Name"
}
],
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"require": {
"php": "^8.2",
"guzzlehttp/guzzle": "^7.0"
},
"bin": ["src/index.php"]
}
サンプルスクリプトの作成
Guzzle を使用した簡単な HTTP クライアントを実装します。
[src/index.php の内容]
<?php
require __DIR__ . '/../vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
// Send an asynchronous request.
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
echo 'I completed! ' . $response->getBody();
});
$promise->wait();
phar ファイルの作成と実行
phar-composer を使用して、プロジェクトを phar ファイルにビルドし、実行する手順を説明します。
-
Docker環境を起動:
docker-compose up -d
-
PHPコンテナに入る:
docker-compose exec php bash
-
phar-composerを使用してpharファイルを作成:
phar-composer build .
-
作成されたpharファイルを実行:
php sample-phar-composer.phar
まとめ
このプロジェクトでは、Docker環境を使用してPHP 8.2とphar-composerを設定し、Guzzleを使用した簡単なHTTPリクエストスクリプトをpharファイルにビルドしました。
主なポイント:
- PHP 8.2を使用
- phar-composerをGitHubから直接インストール
- Guzzleライブラリを使用したHTTPリクエスト
- Docker環境でのビルドと実行
おわりに
PHP アプリケーションの配布と実行を簡素化する phar ファイルの作成方法を学びました。この方法を活用することで、複雑な依存関係を持つ PHP プロジェクトでも、単一の実行可能ファイルとして配布できるようになります。
Discussion