XAMPPで複数バージョンのPHPを切り替えてApache + MySQL を使う方法 on Windows


目標

XAMPPでPHP7.4.xとPHP5.6.xを切り替えてApacheとMySQL、phpMyAdminを使えるようにする

前提

PHPのバージョンが新しい方、もしくは古い方のどちらかでApacheMySQLを稼働できていること

作業

バージョンの異なるXAMPPファイルの入手

ここから欲しいバージョンのPHPが含まれているXAMPPzipファイルをダウンロードする。
PHP単体でなく、XAMPP全体をダウンロードするのはApachephpMyAdminがそれぞれのPHPバージョンに対応した設定になっているから。
今回の方法ではPHPのバージョンを切り替えた際、ApachephpMyAdminのファイルや設定もそれに対応したものにする。
特定のファイルを変更するわけじゃないため作業自体や変更自体は少ないが、少し容量に余裕が必要なことに注意。

名前の変更

新しいバージョン、または古いバージョンが含まれたXAMPPzipファイルをダウンロードできたら、解凍し、以下の3つのフォルダをデスクトップなどにコピー。

  • apache
  • phpMyAdmin
  • php

そして名前を(ファイル名) (phpのメジャーバージョン).(phpのマイナーバージョン)に変更する。
もし、PHP5.6.xをダウンロードした場合、コピーしたフォルダは次の名前になる。

  • apache5.6
  • phpMyAdmin5.6
  • php5.6

名前を変更したら、それらをコピーし、現在のxamppフォルダに貼り付ける。

その後、xampp内のapache,phpMyAdmin,phpを貼り付けたのファイル達と同じ方法で名前を変更する。
既存のPHPバージョンが7.4.xだったら次のようになる。

  • apache7.4
  • phpMyAdmin7.4
  • php7.4

config.inc.phpの移動

今まで使っていたバージョンのphpMyAdminフォルダからconfig.inc.phpを新しく用意したバージョンのphpMyAdminにコピーして貼り付ける。
そうすることで、PHPのバージョンが違っても今までと同じようにphpMyAdminが使えるようになる。
新しく用意したバージョンのphpMyAdminconfig.inc.phpconfig.origin.inc.phpなどに名前を変えて残しておくと良いかもしれない。

シンボリックリンクの作成

シンボリックリンクとはショートカットのようなもの。
php7.4からphpというシンボリックリンクを作成したら、システムや他のファイルはphpというシンボリックリンクを参照して、それに指定されたphp7.4がその中身となる。
正直、使うたびにphp7.4phpに変更するような作業をすればいいが、手間なのでシンボリックリンクを作成する。

今回はPHPのバージョンが5.6のシンボリックリンクを作成する。
シンボリックリンクはコマンドプロントを開いて、それぞれ次のコマンドで実行できる。

$ mklink /D c:\xampp\apache C:\xampp\apache5.6
$ mklink /D c:\xampp\phpMyAdmin C:\xampp\phpMyAdmin5.6
$ mklink /D c:\xampp\php C:\xampp\php5.6

バッチファイル(スクリプト)の作成

「コマンドを毎回入力するよりも名前を毎回変えた方が楽じゃん」
それは否定しないが、コマンドの紹介をしたのは上記のコマンドを含めたバッチファイル(スクリプト)を作成すれば、もっと楽にできる。

ということで、下記のようなバッチファイル(スクリプト)を作成し、xampp下などの使いやすいところに置く。
使い方はエクスプローラーから直接実行するか、コマンドプロントからchange_php.batを置いたところまで移動し、change_php.batを実行する。

change_php.bat
@echo off

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

choice /c 12C /M "使いたいPHPのバージョン."
if %errorlevel% equ 1 goto PHP5_6
if %errorlevel% equ 2 goto PHP7_4
goto OnExit

:PHP5_6
rmdir C:\xampp\apache
mklink /D C:\xampp\apache C:\xampp\apache-5.6
rmdir C:\xampp\phpMyAdmin
mklink /D C:\xampp\phpMyAdmin C:\xampp\phpMyAdmin-5.6
rmdir C:\xampp\php
mklink /D C:\xampp\php C:\xampp\php-5.6
goto OnExit

:PHP7_4
rmdir C:\xampp\apache
mklink /D C:\xampp\apache C:\xampp\apache-7.4
rmdir C:\xampp\phpMyAdmin
mklink /D C:\xampp\phpMyAdmin C:\xampp\phpMyAdmin-7.4
rmdir C:\xampp\php
mklink /D C:\xampp\php C:\xampp\php-7.4
goto OnExit

:OnExit

コマンドプロントの文字コードがANSIなので、名前を付けて保存する際にANSIを指定しないと動作できなくなるので注意。
実際に動かすとこのようになる。

動作確認

xamppフォルダのxampp-control.exeを開き、ApacheMySQLAdminボタンをクリックし、新しく用意したバージョンのPHPInfoで用意したバージョンのPHPになっているのとphpMyAdminに接続できればOK。

参考資料