PHP入門:Dockerでcomposerの実行環境を構築する -vol.4-

スポンサーリンク
PHP入門:Dockerでcomposerの実行環境を構築する -vol.4- 環境構築
PHP入門:Dockerでcomposerの実行環境を構築する -vol.4-
この記事は約7分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、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のバージョンを設定するためのものです。このコマンドを使用する理由について以下に説明します。

  1. プロジェクトのバージョン制御:
  • プロジェクトを他の環境や開発者と共有する際、PHPのバージョンの整合性を維持することが重要です。
  • platform.phpの設定により、Composerはプロジェクトに必要なPHPのバージョンを正確に管理します。
  1. バージョン固定:
  • プロジェクトが依存しているパッケージが、特定のPHPバージョンに依存している場合があります。
  • platform.phpの設定により、Composerはそれらのパッケージに対して特定のPHPバージョンを提供します。
  1. 依存関係の整合性:
  • プロジェクトに含まれるパッケージが、特定の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環境がプロジェクトの要件を満たしているかどうかを確認するために使用されます。

具体的には、このコマンドは以下のことを行います:

  1. PHPバージョンのチェック:
  • composer.jsonplatformセクションに指定されたPHPバージョンの要件が、実際のシステムのPHPバージョンと一致しているか確認します。
  1. 拡張モジュールのチェック:
  • composer.jsonrequireまたは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で構築する方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました