XAMPPで複数のPHPを切り替えて利用する（for Windows）

Wordpressはデータベースを利用してWEBサイトを動的に表示するCMSですが、作業途中のページ等をお客様や来訪者に見せたくないのが常ですので、ローカル環境をPC上に構築して、ある程度の作業を進める必要があります。
そこで、Windowsのローカル環境構築といったら`XAMPP`がメジャーで、私も利用しているので、`XAMPP`でPHPの複数のバージョンを切り替えて利用できる環境をこの記事では構築していきます。

## なぜ複数のPHPバージョンが必要なのか
特定のお客様だけだったり自社で管理するサーバであれば一律同じバージョンのPHPで良いのですが、WEBサイトの構築のみ行い、サーバはお客様が指定する環境に置くという案件が多々ありました。
また最新のPHPのバージョンだと不具合が起きることもあり、既存のサイトであっても、PHPのバージョンアップを行う前にテストを行いたいとの思いもありました。
プラグインは、個々に対応しているPHPのバージョンを記載していますが、自分でテストしてから反映させたいとも思っています。
その辺も踏まえて「PHPのバージョンを手軽に切り替えてテストできないかな？」と思ったことがきっかけです。

## 必要スキル
+ Windows上でコマンドが起動・利用できる（管理者権限）

コマンドが使えないと、そもそも今回の「PHPのバージョンを切り替える」事ができません。
Windows11ではどうやってコマンドを起動するの？とか、Google先生に聞くと丁寧に教えてくれますので、調べてみてください。

:::note info
複数のPHPのファイルをPC上に保有するので、ディスク領域を圧迫します。
PCのディスク容量を気にする方には、この方法は向いていないかもしれません。
:::

## 構築する環境
`PHP5.6.36` `PHP7.3.28` `PHP8.1.60`の３つのバージョンに合わせて`Apache`と`phpMyAdmin`、`php`をコマンドで切り替える環境を構築します。
既にサポート終了している5.6.36とか7.3.28って！！！って思われるかもですが、色々ありますのでここはスルーしてください。

https://qiita.com/bezeklik/items/72d1ff8393f66673e2bc


## 1.XAMPPのダウンロード・インストール
まだインストールされていな方は、こちらのリンクから↓

https://www.apachefriends.org/jp/download.html

後々PHPのバージョンは切り替えて使うので、ダウンロードはどのバージョンでも問題ないです。
サクッとダウンロード・インストールしましょう。

ダウンロードとインストールが終わったら、そのままメッセージに従ってインストールを完了させ、起動してください。
既に利用されている方も含め、正常起動している前提で、次に進みます。

:::note info
既にXAMPPをインストールされている方へ
**PHPのバージョンを確認しておいてください。**
PHPのバージョンごとにXAMPPをダウンロードするため、ダブりがないようにするためです。
XAMPPのコントロールパネルの`Shell`から`php -v`で確認できます。
（コマンドプロンプトから`php -v`が使える方はそちらでもOKです）
:::
![XAMPP_コントロールパネル_shell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004345/0635d9f1-60b2-fa84-f062-9e4860541c02.jpeg)


## 2.必要なPHPのバージョンのXAMPPをダウンロード
こちらのリンク先で、過去から現在の色々なPHPバージョンのXAMPPがダウンロードできます。
該当のPHPのバージョンリンクをクリックすると、複数のダウンロードファイルのリンクが表示されますので、その中から`zip`ファイルをクリックしてダウンロードしてください。

https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/

今回のPHPのバージョンを切り替えてXAMPPを利用する際に、PHPのバージョンごとに`apache` `php` `phpMyAdmin`が必要になります。
`exe`ファイルだとダブルクリックでインストーラーが起動してしまうので、（`exe`でも解凍ソフトで展開すればいけますが）`zip`にします。

## 3.必要ファイルのリネーム
前述した通り、PHPのバージョンごとに`apache` `php` `phpMyAdmin`が必要になりますので、それ以外のファイルは削除して大丈夫です。
![zip展開_必要ファイル02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004345/6efb520d-f18b-7481-be0a-8c499ccdc662.jpeg)
`apache` `php` `phpMyAdmin`のフォルダにPHPのバージョン名を入れておきます。
例えば、PHP8.1.12をダウンロードした場合は`apache8112` `php8112` `phpMyAdmin8112`とします。
これは、PHPの切り替えをする際に覚えやすく、簡単に手入力ができるからです。

インストールされているXAMPPの該当ファイル名も上述したルールに則ってリネームします。
（フォルダの場所は移動しないでください）

## 4.フォルダの配置
既にインストールされているXAMPPのフォルダ`C:\xampp\`にリネームしたフォルダを配置します。
（画像では、`PHP`のバージョンは、`5.6.36`、`7.3.28`、`8.1.60`です）
![phpごとのフォルダ移動.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004345/97d55965-b918-d721-bbb4-2ca232649a3a.jpeg)

## 5.シンボリックリンクの作成
シンボリックリンクは、ショートカットのようなものです。
このショートカットの参照先を変えることで、XAMPPで`PHP`の切り替えが簡単にできます。
コマンドプロンプトを管理者権限で起動し、シンボリックリンクを作成します。

既にシンボリックリンクを作成している場合は`rmdir`で先にシンボリックリンクを削除します。
```
rmdir C:\xampp\apache
rmdir C:\xampp\phpMyAdmin
rmdir C:\xampp\php
```
`mklink`でシンボリックリンクを作成します。
```
mklink /D C:\xampp\apache C:\xampp\apache（バージョン）
mklink /D C:\xampp\phpMyAdmin C:\xampp\phpMyAdmin（バージョン）
mklink /D C:\xampp\php C:\xampp\php（バージョン）
```
画像の様にできていれば成功です。
![シンボリックリンク.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004345/70700b00-4b58-33e4-be36-7d15fb84e419.jpeg)
コントロールパネルを起動して正常に動作しているか確認しましょう。
![成功.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3004345/1b8100eb-88ae-2c8d-d63c-c7f723b66664.jpeg)

## 6.おまけ（バッチファイルで簡単切り替え）
上述したコマンドからの切り替えだと、指定フォルダ名の大文字小文字間違えや綴り間違えなどを起こします（私がそうでした汗）。
なので、`bat`ファイルを用意して、バージョンを指定すれば簡単に切り替えができるようにします。
以下コードです。
ご自身の環境に合わせて、PHPのバージョンの書き換えを行ってください。
```
@echo off

echo.
echo 使いたいPHPのバージョンを選択してください。
echo.
echo 現在のPHPバージョン:
echo.
php -v
echo.
echo 1: PHP 5.6.36
echo 2: PHP 7.3.28
echo 3: PHP 8.1.12
echo C: Cancel
echo.

choice /c 123C /M "使いたいPHPのバージョン."
if %errorlevel% equ 1 goto PHP5_6_36
if %errorlevel% equ 2 goto PHP7_3_28
if %errorlevel% equ 3 goto PHP8_1_12
goto OnExit

:PHP5_6_36
rmdir C:\xampp\apache
mklink /D C:\xampp\apache C:\xampp\apache5636
rmdir C:\xampp\phpMyAdmin
mklink /D C:\xampp\phpMyAdmin C:\xampp\phpMyAdmin5636
rmdir C:\xampp\php
mklink /D C:\xampp\php C:\xampp\php5636
echo PHP5.6.36に切り替えました
pause
goto OnExit

:PHP7_3_28
rmdir C:\xampp\apache
mklink /D C:\xampp\apache C:\xampp\apache7328
rmdir C:\xampp\phpMyAdmin
mklink /D C:\xampp\phpMyAdmin C:\xampp\phpMyAdmin7328
rmdir C:\xampp\php
mklink /D C:\xampp\php C:\xampp\php7328
echo PHP7.3.28に切り替えました
pause
goto OnExit

:PHP8_1_12
rmdir C:\xampp\apache
mklink /D C:\xampp\apache C:\xampp\apache8112
rmdir C:\xampp\phpMyAdmin
mklink /D C:\xampp\phpMyAdmin C:\xampp\phpMyAdmin8112
rmdir C:\xampp\php
mklink /D C:\xampp\php C:\xampp\php8112
echo PHP8.1.12に切り替えました
pause
goto OnExit

:OnExit
```
私の場合は、PHPのバージョンが切り替わった時点で何かしらのメッセージが欲しかったので、`goto OnExit`の前に`echo PHP（バージョン）に切り替えました`を表示するようにして、適当なキーを押下することで切り替えが完了するようにしています。
不要な方は、以下の部分を削除してください。
```
echo PHP5.6.36に切り替えました
pause
```

拡張子を`.bat`にして、うっかり削除してしまうことを避けるため、XAMPPがインストールされているフォルダへ保存します。
コマンドプロンプトの文字コードが`Shift-JIS`なので、保存する際の文字コードに注意してください。

:::note warn
注意
またこのコードの最初の方で、現在利用している`PHP`のバージョンを表示するようにしていますが、OSに`環境変数`の指定をしないと`php -v`が実行できないので、`環境変数`の指定をしてください。
（参考にリンクあり：<a href="http://lovee7.blog.fc2.com/blog-entry-132.html">PHPのバージョンを調べる</a>）
:::

私の場合は、作成したバッチファイルのショートカットをデスクトップに配置していますが、直接エクスプローラーから起動でも良いです。その場合、**管理者権限で実行**するのを忘れずに。

## まとめ
これでローカルのテスト環境が整いました。
今後は安心してPHPの新バージョンのテストが行えます。
ただ、ローカルで大丈夫でも実際本番環境でうまくいかない事も多々ありますので、最終的にはサブドメイン等を用意してテストするのが一番良いかと思います。

## 参考
私はこちらの記事を参考にしました。感謝！

https://qiita.com/kaitaku/items/e0ae54fc04d222ded5c9

http://lovee7.blog.fc2.com/blog-entry-132.html