20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WindowsでマルチPHPをもっと楽に実現する

Last updated at Posted at 2021-11-19

windowsでマルチPHPを実現するという記事を見かけたのですが、ジャンクションを使ったほうがもっと楽なのでやり方を紹介します。

シンボリックリンクでもいいんだけど何故か管理者権限が必要だし、今回の用途であればジャンクションで十分です。
なおショートカットでは駄目です。

PHPをインストール

PHP For Windowsから適当にファイルをダウンロードして、適当にディレクトリに展開します。
今回はとりあえず
C:\xampp\php7.4.26
C:\xampp\php8.0.13
ってかんじに配置しました。

なんでxamppなのかって?
そりゃXAMPPを使ってるからに決まってる。

エイリアスを設定

参考記事に合わせて記述すると、こんなかんじになるでしょうか。

vi /c/php/php

#!/usr/bin/bash
"/c/xampp/php/php.exe" $*
vi /c/php/php.bat

@echo off
"C:\xampp\php\php.exe" %*
vi ~/.bash_profile

alias php='/c/xampp/php/php'

私は環境変数PATHにC:\xampp\phpって突っ込んで済ませますが。

ジャンクションを作成

cmdで以下のコマンドを打つと、C:\xampp\phpというジャンクションが作成されます。

mklink /J C:\xampp\php C:\xampp\php8.0.13

一見ショートカットに見えるのですが実際はジャンクションです。
見分け方はコマンドラインでdircdしてみればいいです。

これで無事に、phpコマンドでPHP8.0.13が実行されるようになりました。

01.png

PHPバージョンを変更

phpコマンドでPHP8.0.13が実行されるようになりましたが、これを変更してみましょう。
やりかたは以下のコマンドを打つだけです。

rmdir C:\xampp\php
mklink /J C:\xampp\php C:\xampp\php7.4.26

これでphpコマンドで実行されるPHPが、PHP7.4.26になりました。

02.png

何処から使用するかを気にせず、ジャンクションを変更するだけで常に全てのPHPバージョンが切り替えられるようになります。
べんりですね。

これでコマンドを2個打つだけで、好きにPHPのバージョンを切り替えられるようになりました。
切り替えコマンドをバッチにしてphpvm use 8.1.0みたいに書けるようにすると、もっと便利になるかもしれませんね。
というか実際それをやったのがNVM for Windowsです。

NVM for Windows

NVM for Windowsは、バージョン切り替えに上記と同じような仕組みを使っています。

nvm installでNodeをインストールするとC:\Program Files\nodejs\ディレクトリができるのですが、このnodejsはシンボリックリンクです(ジャンクションではない)。
実際の中身はC:\Users\hoge\AppData\Roaming\nvm\v1.2.3みたいなところに配置されて、nodejsはそこを参照するという構造です。

nvm use 4.5.6と打つと、このシンボリックリンクがC:\Users\hoge\AppData\Roaming\nvm\v4.5.6と切り替わり、以後は何処からnodeコマンドを打っても変更後のバージョンになります。
べんりですね。

このように、PHPやNodeだけではなく、インストールを必要としないソフトウェアであれば何にでも使える手法です。
なにか面白い使い方があったら教えてくださいね。

まとめ

Docker使え?

知るか。

20
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?