XAMPPで複数のPHPバージョンを切り替えて使う方法方法には、以下の2種類があります。
- XAMPPポータブル版を使用する方法【推奨】
- シンボリックリンクを使用して、PHPを切り替える方法【非推奨】← この記事で解説
この記事で解説している方法は、『シンボリックリンクを使用して、PHPを切り替える方法【非推奨】』です。
- Windows11 Home (23H2)
- XAMPP 8.2.4
- XAMPP 7.4.33(PHPのみ抜き出し)
非推奨である理由
シンボリックリンクを使用してPHPを切り替える方法が、なぜ非推奨なのか。その理由には次の2つがあります。
- 正常に動作しないPHPの処理があった。
- 切り替え手順が面倒くさい。
これらの理由について、簡単に説明します。
正常に動作しないPHPの処理があった
開発業務で実際にトラブルを経験しました。具体的には「cURL」の処理が正常に実行されませんでした。
正確な原因は不明ですが、おそらく「cURL」の処理はPHPだけで完結しておらず、XAMPPの他の処理に依存している部分があるからなのではないか、と推測しています。
シンボリックリンクの切り替えでPHPのバージョンを切り替える方式は、確かにPHPのバージョンは切り替わっているのですが、XAMPP本体などPHP以外のモジュールは最初にインストールしたバージョン用なのですから、細かい不整合があるのではないか、と思います。
もしかしたら、適切なモジュールを追加する等の対処によって解決した問題かもしれません。しかし『XAMPPポータブル版を使用する方法【推奨】』であれば、そのような対処は不要ですし、何よりPHPのバージョン切り替え手順が簡素です。
切り替え手順が面倒くさい
詳しい手順は後ほど記載しますが、「現在のシンボリックリンクを削除し、希望するバージョンに向けたシンボリックリンクを作成する」という、ちょっと面倒くさい手順で切替を実施する必要があります。
シンボリックリンク方式による、PHPのバージョン切り替えの準備
インストール済のXAMPPのPHPのバージョンは「8.2.4」とします。
現状、PHPがインストールされているフォルダは「c:¥xampp¥php」です。
現在のPHPのフォルダ名を変更
これから複数のバージョンのPHPをインストールしていくにあたり、「php」というフォルダ名だとバージョンが分からなくなってしまいますので、このフォルダ名を「php824」に変更します。
設定ファイル名の変更
XAMPPが使用しているPHP設定ファイル「C:¥xampp¥apache¥conf¥extra¥httpd-xampp.conf」は、現在のPHPバージョン用です。
そのため、ファイル名を「httpd-xampp824.conf」に変更します。
シンボリックリンクの作成
フォルダ名変更とファイル名変更を行ったところで、「XAMPP Control Panel」から「Apache」を起動してみます。すると、以下のようなエラーになり、Apacheの起動に失敗しました。
起動に失敗したのは当然で、Apacheが参照しているPHPのフォルダ名や設定ファイル名を変更したわけですから、参照できなくなってしまってエラーになっているわけです。これを解決するために「シンボリックリンク」を作成します。
シンボリックリンクは、フォルダやファイル名の「読み替え機能」のようなものです。
XAMPPのApacheには、『PHPの場所は「c:¥xampp¥php」』と設定されているのですが、それを「c:¥xampp¥php824」とリネームしたものですから、Apacheから見るとPHPが参照できなくなってエラーになってしまったわけです。
シンボリックリンクを作成すると、「c:¥xampp¥php」という元の設定は「c:¥xampp¥php824」に読み替えられて、参照されます。
シンボリックリンクを作成するために、「コマンドプロンプト」を「管理者として実行」します。
シンボリックリンクを2つ作成します。以下のコマンドを実行します。
mklink /D C:\xampp\php C:\xampp\php824
mklink C:\xampp\apache\conf\extra\httpd-xampp.conf C:\xampp\apache\conf\extra\httpd-xampp824.conf
以下は実行イメージです。
シンボリックリンクを作成したので、今度はエラーなくApacheが起動するハズです。正常起動を確認します。
ブラウザから「http://localhost/dashboard/phpinfo.php」にアクセスし、現在のバージョンのPHP情報が表示されることを確認します。
コマンドプロンプトから「php -v」を実行し、PHPのバージョンを確認します。
以上で、インストール済のPHPに対するシンボリックリンクの作成が完了しました。もうお分かりかもしれませんが、残りの作業は「目的のバージョンのPHPの導入と、それ用のシンボリックリンクの作成」になります。
目的のバージョンのPHPをダウンロード
今回は、PHP7.4系の最終バージョンをダウンロードして、使用できるように作業をしていきます。
XAMPPの公式サイトにアクセスし、一番上に表示されている「ダウンロード」をクリックします。
https://www.apachefriends.org/jp/
ダウンロードページが開きましたが、ここに表示されている中に、目的の「PHP7.4系最終バージョン」がありませんので、「その他のダウンロード」をクリックします。
「SOURCEFORGE」に遷移しました。古いバージョンのXAMPPは「SOURCEFORGE」に格納されており、ここからダウンロードする形になります。「XAMPP Windows」をクリックします。
Windows用XAMPPのダウンロードページに遷移しました。このページから、様々なバージョンのXAMPPをダウンロードすることができます。今回はPHP7.4系最終バージョンをダウンロードしたいのですが、上から探してみると「7.4.33」がありましたので、それをクリックします。
表示されたリストの中から「xampp-windows-x64-7.4.33-0-VC15.zip」をクリックしてダウンロードします。「インストーラー形式」ではなく「zip形式」をダウンロードします。
ダウンロードが完了したら、解凍します。
ダウンロードしたXAMPPからPHPを抜き出す
ダウンロードしてきた「zipファイル」には、XAMPPシステムの一式が含まれているわけですが、この記事で解説している「シンボリックリンクを使用したPHPの切り替え方式」で必要になるのは『PHPだけ』です。
そのため、ダウンロードしてきたファイルの中から、PHPだけを、現在使用しているXAMPP(PHP8.2.4)の中にコピーします。
移行するのは、以下の2つです。
- フォルダ「¥xampp¥php」
- ファイル「¥xampp¥apache¥conf¥extra¥httpd-xampp.conf」
上記のフォルダとファイルを「PHP7.4.33」であることを明確にするために、以下のようにリネームして移行します。
- フォルダ「php」→「php7433」
- ファイル「httpd-xampp.conf」→「httpd-xampp7433.conf」
リネームしたら、「C:¥xampp」下にCOPYします。
次のスクリーンショットは、フォルダ「php7433」を移行したところです。
次のスクリーンショットは、ファイル「httpd-xampp7433.conf」を移行したところです。
以上でPHPの移行作業は完了です。ここまでの作業で「PHP8.2.4」と「PHP7.4.33」を随時切り替えて使用できる状態になっています。
シンボリックリンク方式による、PHPのバージョンを切り替える手順
切替の手順は以下の通りです。
- 現在のシンボリックリンクを削除
- 目的のPHPバージョンに向けたシンボリックリンクを作成
- Apacheの再起動
現在、PHPのシンボリックリンクは「PHP 8.2.4」に向いているので、PHP 8.2.4が有効になっています。ダウンロードした「PHP 7.4.33」が利用できるように切り替えてみます。
「コマンドプロンプト」を「管理者として実行」します。
次の2つのコマンドを実行します。
del C:\xampp\apache\conf\extra\httpd-xampp.conf
rmdir C:\xampp\php
以上で現在のシンボリックリンクが削除されました。次に、以下の2つのコマンドで「PHP 7.4.33」に向けるシンボリックリンクを作成します。
mklink /D C:\xampp\php C:\xampp\php7433
mklink C:\xampp\apache\conf\extra\httpd-xampp.conf C:\xampp\apache\conf\extra\httpd-xampp7433.conf
XAMPPコントールパネルから、「Apache」を「Stop」→「Start」します(Apacheの再起動)。
ブラウザで「http://localhost/dashboard/phpinfo.php」にアクセスすると、「PHP 7.4.33」の情報画面が表示されました。
コマンドプロンプトで「php -v」を実行すると、「PHP 7.4.33」と表示されました。
以上で、使用するPHPを「PHP7.4.33」に切り替えることができました。
しつこいようですが、この記事で解説した「シンボリックリンクを使用したPHPバージョンの切り替え」は、非推奨な方式です。ここまでの説明で見てきたように、手順が面倒ですし、さらに正常に動作しないPHP処理があるので、本当にオススメしません。
オススメするPHPバージョンの切り替え方法は「XAMPPポータブル版を使用する方法」です。
MacでHomebrewを使用するなどしてPHP環境を作っている方は、「PHPのモジュールの切り替えはしなくて良いの?」と思ったかもしれません。
XAMPP以外の環境では、Apacheの「httpd.conf」に使用するPHPモジュールの設定がされており、PHPのバージョンを切り替えると、その設定も変更しなければならないケースがあります(Macの場合はそうだと思います)。
結論は「XAMPPの場合は必要ない」です。XAMPPでは、PHPモジュールの設定は「httpd-xampp.conf」に書かれており、このファイルは上記の手順の通りPHPのバージョン毎に切り替えているからです。