このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
composer:1.9:phpswitch [2020/03/13 11:41] y2sunlight |
composer:1.9:phpswitch [2020/11/19 17:29] (現在) y2sunlight [ComposerとPHPの関係] |
||
---|---|---|---|
行 10: | 行 10: | ||
* [[composer: | * [[composer: | ||
* ComposerをPHPバージョンで使い分ける | * ComposerをPHPバージョンで使い分ける | ||
+ | * [[composer: | ||
* [[composer: | * [[composer: | ||
* [[composer: | * [[composer: | ||
- | * [[composer: | + | * [[composer: |
- | * | + | |
---- | ---- | ||
+ | |||
+ | ===== 概要 ===== | ||
「Windowsの開発環境下で各プロジェクト毎のPHPのバージョンを変えたい」と言う要求はよくあると思います。[[xampp: | 「Windowsの開発環境下で各プロジェクト毎のPHPのバージョンを変えたい」と言う要求はよくあると思います。[[xampp: | ||
行 23: | 行 25: | ||
プロジェクト毎にPHP環境を変える方法には、[[https:// | プロジェクト毎にPHP環境を変える方法には、[[https:// | ||
- | ==== ComposerとPHPの関係 ==== | + | \\ |
+ | |||
+ | ===== ComposerとPHPの関係 | ||
Composerがパッケージを検索する時、対象となるPHPのバージョンはComposerを実行したPHPのバージョンに一致します。例えば、PHP7.2.8の環境下で以下のコマンドを実行します。([[basic-library: | Composerがパッケージを検索する時、対象となるPHPのバージョンはComposerを実行したPHPのバージョンに一致します。例えば、PHP7.2.8の環境下で以下のコマンドを実行します。([[basic-library: | ||
行 49: | 行 53: | ||
この時、ComposerはPHP7.2.8を対象としたphpdotenvパッケージを探します。以下は、自動生成されたcomposer.jsonです。phpdotenvのバージョンが4.1である点に注目しておいて下さい。 | この時、ComposerはPHP7.2.8を対象としたphpdotenvパッケージを探します。以下は、自動生成されたcomposer.jsonです。phpdotenvのバージョンが4.1である点に注目しておいて下さい。 | ||
- | < | + | < |
{ | { | ||
" | " | ||
行 65: | 行 69: | ||
最初に思いつくのは「composer.jsonでPHPのバージョンを指定できないか?」という事です。勿論これは可能で、Composer.jsonに config.php を追加します。 | 最初に思いつくのは「composer.jsonでPHPのバージョンを指定できないか?」という事です。勿論これは可能で、Composer.jsonに config.php を追加します。 | ||
- | < | + | < |
{ | { | ||
" | " | ||
行 125: | 行 129: | ||
この時、ComposerはPHP5.4.19を対象としたphpdotenvパッケージを探します。以下が、composer.jsonの内容です。 | この時、ComposerはPHP5.4.19を対象としたphpdotenvパッケージを探します。以下が、composer.jsonの内容です。 | ||
- | < | + | < |
{ | { | ||
" | " | ||
行 157: | 行 161: | ||
</ | </ | ||
- | * [1行名] コメント | + | * [2行名] コメント |
- | * [2行名] 遅延環境変数の展開を無効にする | + | * [3行名] 遅延環境変数の展開を無効にする |
- | * [3行目] PATH環境変数の通っているphp.exeでcomposer.pharを起動する(%~dp0 は composer.bat の存在するドライブ文字とパスを表す。上のに場合 C: | + | * [4行目] PATH環境変数の通っているphp.exeでcomposer.pharを起動する(%~dp0 は composer.bat の存在するドライブ文字とパスを表す。上のに場合 C: |
composer.batで何が起こっているか分かれば話は簡単です。インストールされているcomposer.pharはこのまま使う事にして、composer.batだけをプロジェクトフォルダ(composer.jsonと同じフォルダ)にコピーしてcomposer.batを以下のように変更します。 | composer.batで何が起こっているか分かれば話は簡単です。インストールされているcomposer.pharはこのまま使う事にして、composer.batだけをプロジェクトフォルダ(composer.jsonと同じフォルダ)にコピーしてcomposer.batを以下のように変更します。 | ||
行 171: | 行 175: | ||
</ | </ | ||
- | 変更箇所は3行目です。php.exeとcomposer.pharを絶対パスに変更します。この例ではPHPのバージョンを現在使用しているもの(7.2.8)から7.3.15に上げています。 | + | 変更箇所は4行目です。php.exeとcomposer.pharを絶対パスに変更します。この例ではPHPのバージョンを現在使用しているもの(7.2.8)から7.3.15に上げています。 |
Composer diag 以下を実行すると確かに動いていることが確認できます。 | Composer diag 以下を実行すると確かに動いていることが確認できます。 | ||
行 193: | 行 197: | ||
この方法では、composer.batをプロジェクトに取り込んでいるので既定のPHPバージョンを意識する必要が無く、PATH環境変数も必要ありません(Eclipseもphp.exeは絶対Path指定、Composer以外でPATHを使用していない場合php.exeのPATHは不要になります)。但し、composer.batは絶対パスを含むので環境依存となり、プロジェクトメンバでこのファイルを共有する場合は注意が必要です。悩ましい限りです。 | この方法では、composer.batをプロジェクトに取り込んでいるので既定のPHPバージョンを意識する必要が無く、PATH環境変数も必要ありません(Eclipseもphp.exeは絶対Path指定、Composer以外でPATHを使用していない場合php.exeのPATHは不要になります)。但し、composer.batは絶対パスを含むので環境依存となり、プロジェクトメンバでこのファイルを共有する場合は注意が必要です。悩ましい限りです。 | ||
+ | |||
+ | \\ | ||