カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Windows XAMPPのPHPバージョン切り替え

WindowsでXAMPPを使ってPHPの開発をしているとPHPの特定のバージョンで動作検証がしたい!ということがあると思います。
そんな時に手軽にPHPのバージョンを切り替えできる方法があったのでご紹介します。

※XAMPPはC:\xamppにインストールされている条件での説明となります。

まずはSourceForgeにて公開されているXAMPPの過去のバージョンをダウンロードします。
https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/

XAMPPのバージョン=PHPのバージョンなので、検証したいバージョンのXAMPPのZIP形式をダウンロードします。
ここでは例として7.4.19をダウンロードしたと仮定します。
ダウンロードしたら解凍しましょう。

前準備としてC:\xamppにあるphpフォルダーをリネームします。
PHPのバージョンに合わせてリネームしましょう。
PHPバージョンが8.0.6であればphpphp8.0.6にリネームします。
次にC:\xampp\apache\conf\extraにあるhttpd-xampp.confhttpd-xampp.conf.8.0.6にリネームします。
これで前準備は完了です。

次にダウンロードして解凍したxamppフォルダーにあるphpフォルダーをphp7.4.19にリネームし、C:\xampp内に入れます。
そしてapache\conf\extraにあるhttpd-xampp.confhttpd-xampp.conf.7.4.19にリネームし、C:\xampp\apache\conf\extra内に入れます。

コマンドプロンプトを管理者として実行します。
C:\xamppに移動し次のコマンドを実行します。

mklink /D php php7.4.19

C:\xampp\apache\conf\extraに移動し次のコマンドを実行します。

mklink httpd-xampp.conf httpd-xampp.conf.7.4.19

こうすることでバージョンが付加されたフォルダーであってもシンボリックリンクでアクセスすることが出来るようになります。
別のバージョンに切り替えたいときはシンボリックリンクを作り直せばいいということになります。

PowerShellで実行する場合

コマンドプロンプトと同じく管理者としてPowerShellを実行します。

C:\xamppに移動し次のコマンドを実行します。

New-Item -ItemType SymbolicLink -Path php -Target php7.4.19

C:\xampp\apache\conf\extraに移動し次のコマンドを実行します。

New-Item -ItemType SymbolicLink -Path httpd-xampp.conf -Target httpd-xampp.conf.7.4.19

いちいちコマンド打つのが面倒だ・・・

頻繁にバージョンを変更して検証する場合など、いちいちコマンドを打って変更するのが面倒だという場合は、PowerShellのプロファイルに関数を設定してしまいましょう。
以下のコードをPowerShellのプロファイルに書き込みます。

function changePhpVersion($version) {
  if($null -eq $version) {
    echo "Please enter an argument. PHP VERSION"
    return
  }
  Set-Location \xampp
  Remove-Item -Recurse php
  New-Item -ItemType SymbolicLink -Path php -Target "php${version}"
  Set-Location apache\conf\extra
  Remove-Item httpd-xampp.conf
  New-Item -ItemType SymbolicLink -Path httpd-xampp.conf -Target "httpd-xampp.conf.${version}"
}

上記を設定すると次回からバージョンを変更するときは次のようにコマンドを入力するだけで変更することができます。

changePhpVersion 7.4.19
この記事がお役に立ちましたらシェアお願いします
4,560 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です