こんにちは。よっしーです(^^)
今日は、PHPにおけるComposerの実行環境をDockerで構築する方法についてご紹介します。
背景
PHPにおけるComposerの実行環境をDockerで構築する方法について調査する機会があったので、そのときの内容を備忘として残しました。
実行環境については、下記の記事を御覧ください。
概要
composer install を実行すると、下記のようなエラーがでるときがあります。
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= xxx”. You are running yyy
このときにComposerが使用するPHPのバージョンを指定したので、その時の内容を共有します。
対応内容
下記のコマンドを実行します。
make login
composer config platform.php 8.2.14
composer update
修正内容
modified: php/Dockerfile
modified: php/src/composer.json
modified: php/src/composer.lock
php/Dockerfile
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
+ curl \
unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
php/src/composer.json
{
"require-dev": {
"phpunit/phpunit": "^10.5"
+ },
+ "config": {
+ "platform": {
+ "php": "8.2.14"
+ }
}
}
php/src/composer.lock
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "edf908e1f6b0e4fca8854163be177e40",
+ "content-hash": "159b0325f7b0f41b1baac94916818e5f",
"packages": [],
"packages-dev": [
{
@@ -1630,5 +1630,8 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
+ "platform-overrides": {
+ "php": "8.2.14"
+ },
"plugin-api-version": "2.6.0"
}
解説
composer config platform.php 8.2.14
php composer.phar config platform.php
コマンドは、ComposerでプラットフォームPHPのバージョンを設定するためのものです。このコマンドを使用する理由について以下に説明します。
- プロジェクトのバージョン制御:
- プロジェクトを他の環境や開発者と共有する際、PHPのバージョンの整合性を維持することが重要です。
platform.php
の設定により、Composerはプロジェクトに必要なPHPのバージョンを正確に管理します。
- バージョン固定:
- プロジェクトが依存しているパッケージが、特定のPHPバージョンに依存している場合があります。
platform.php
の設定により、Composerはそれらのパッケージに対して特定のPHPバージョンを提供します。
- 依存関係の整合性:
- プロジェクトに含まれるパッケージが、特定のPHPバージョンに依存している場合、Composerはその整合性を維持します。
- これにより、開発者が異なる環境でプロジェクトを実行する際に、予期せぬ問題が発生する可能性が低減します。
具体的なコマンドの形式は以下の通りです。
composer config platform.php 8.2.14
これにより、composer.json
内のconfig.platform.php
の値が設定され、プロジェクトが依存しているパッケージが指定されたPHPバージョンと整合性があるかどうかをComposerが確認できるようになります。
composer check-platform-reqs
composer.phar check-platform-reqs
コマンドは、Composerが指定されたPHPバージョンや拡張モジュールに対して満たすべき要件を確認するためのものです。主に、Composerがプロジェクトをインストールする前に、システムのPHP環境がプロジェクトの要件を満たしているかどうかを確認するために使用されます。
具体的には、このコマンドは以下のことを行います:
- PHPバージョンのチェック:
composer.json
のplatform
セクションに指定されたPHPバージョンの要件が、実際のシステムのPHPバージョンと一致しているか確認します。
- 拡張モジュールのチェック:
composer.json
のrequire
またはrequire-dev
セクションに指定されたPHP拡張モジュールの要件が、実際のシステムにインストールされているか確認します。
このコマンドは、特に異なる環境でプロジェクトを実行する前に、必要な条件が満たされているかどうかを確認するために有用です。もしも要件が満たされていない場合、Composerはエラーメッセージを表示し、プロジェクトの依存関係をインストールする前に問題を修正するように求めるでしょう。
ちなみに、今回の環境では下記のような結果になりました。
root@737244ec875a:/work# composer check-platform-reqs
Checking platform requirements for packages in the vendor dir
ext-ctype 8.2.14 success
ext-dom 20031129 success
ext-json 8.2.14 success
ext-libxml 8.2.14 success
ext-mbstring 8.2.14 success
ext-phar 8.2.14 success
ext-tokenizer 8.2.14 success
ext-xml 8.2.14 success
ext-xmlwriter 8.2.14 success
php 8.2.14 success
おわりに
今日は、PHPにおけるComposerの実行環境をDockerで構築する方法についてご紹介しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント