Sponsored Link
[XAMPP]複数のバージョンのPHPを使い分ける
概要
XAMPPでPHPのバージョンを使い分けます。
関わっている案件によって開発環境が異なると思いますが、せめてPHPのバージョンは案件に合わせて開発したいなという思いが発端です。
そのうち、CentOS7 + Vagrant + Virtual Box でも試してみたいと思います。
環境
Windows10 Pro 64bit
参考サイト 様
手順
XAMPPをダウンロード
ここから使いたいバージョンのXAMPPをダウンロードしましょう。
exeファイル(インストーラー)ではなく、zip か 7z のものをダウンロードしてください。
どのバージョンに何が入っているかは、Wikipediaを見たほうが早いと思いますw
今回はPHPの 7.1系 7.0系 5.6系 5.4系 が入っているXAMPPをダウンロードしていきます。
配置先のディレクトリ
ダウンロードしたXAMPPを解凍して、フォルダ名をバージョン毎に変更します。
変更したフォルダは任意のところに置いてもらって大丈夫です。
今回は、下記のような構成でおこないます。
- C:\dev\xampp71
- C:\dev\xampp70
- C:\dev\xampp56
- C:\dev\xampp54
環境変数を設定する
インストーラーからではないので、自分で環境変数を設定しなければいけません。
システムのプロパティ > 環境変数 > システム環境変数(S) > Path
から、
- C:\xampp\php
- C:\xampp\mysql\bin
を追加します。
シンボリックリンクを作成する
まず 7.1系 のPHPで起動させたいと思います。
Cドライブ直下にxamppフォルダはないので、このままでは環境変数は意味を成しません。
そこでシンボリックリンクを作成します。
コマンドプロンプトを管理者で実行します。
その後、下記のコマンドを実行するとシンボリックリンクが作成されます。
MKLINK /D "C:\xampp" "C:\dev\xampp71"
シンボリックリンクを作成することで、わざわざバージョン毎に環境変数を設定する必要がなくなります。
XAMPPを起動させる
C:\dev\xampp71
にある xampp-control.exe
を実行します。
実行させるといつものXAMPPの Control Panel が開きますので、Apache と MySQL を起動させます。
WEBブラウザから、phpinfoでバージョンを確認してみてください。
7.1系のバージョンが表示されていたら成功です。
バージョンを切り替える
最後にバージョンを切り替えてみます。
やり方は簡単で、
作成したシンボリックリンクを削除して、新たにシンボリックリンクを作成すればいいだけです。
▼シンボリックリンクの削除
RMDIR "C:\xampp"
▼シンボリックリンクの生成
MKLINK "C:\xampp" "C:\dev\xampp54"
これで、C:\dev\xampp54
にある xampp-control.exe
を実行してみて、前項のように確認ができれば成功です。
batファイルでXAMPPを管理する
先ほどの方法でもいいのですが、いちいちコマンドプロンプトを立ち上げてシンボリックリンクを作成 / 削除するのも面倒ですよね。
そこで、batファイルを起動させるだけでバージョン切り替えが出来るようにしてみましょう。
batファイルの作成する
下記のコードをコピペして、C:\dev\start_xampp.bat
で保存します。(保存先やフォルダ名は任意で構いません。どこに置いても大丈夫です)
@echo off
CD /D "C:\"
chcp 65001
C:
echo.
echo PHPのバージョンを選択してください
echo ⇒ 1:5.3系
echo ⇒ 2:5.4系
echo ⇒ 3:5.6系
echo ⇒ 4:7.0系
echo ⇒ 5:7.1系
set /P USR_INPUT_STR=
if %USR_INPUT_STR%==1 (
set XAMPP_VERSION=53
) else if %USR_INPUT_STR%==2 (
set XAMPP_VERSION=54
) else if %USR_INPUT_STR%==3 (
set XAMPP_VERSION=56
) else if %USR_INPUT_STR%==4 (
set XAMPP_VERSION=70
) else if %USR_INPUT_STR%==5 (
set XAMPP_VERSION=71
) else (
echo 設定値(%USR_INPUT_STR%)に誤りがあります。継続すると起動をキャンセルします。
pause
exit /B
)
echo.
echo XAMPP%XAMPP_VERSION%を起動します。
MKLINK /D "C:\xampp" "C:\dev\xampp%XAMPP_VERSION%"
echo.
echo XAMPP%XAMPP_VERSION%の起動を確認します。
echo.
php -v
echo.
mysql --version
echo.
C:\xampp\apache\bin\httpd -v
cd C:\dev\xampp%XAMPP_VERSION%
call xampp_start.exe
start xampp-control.exe
echo.
echo XAMPP%XAMPP_VERSION%を停止します。
pause
call xampp_stop.exe
RMDIR "C:\xampp"
ショートカットを作成する
保存したbatファイルのショートカットを作成して、ショートカットを右クリックします。
その後、
ショートカットのプロパティ > ショートカット > 詳細設定 > 管理者として実行
のチェックボックスにチェックをつけてOKを押します。
batファイルを起動する
作成したショートカットを起動させると、コマンドプロンプトが起動するので表示に沿ってPHPのバージョンを入力すれば、指定したバージョンのPHPのXAMPPが起動します。
停止させたい場合はコマンドプロンプト上で何かしらのキーを入力すれば停止します。
これで、楽にPHPのバージョンを分けてXAMPPを利用できます!!
それではよいXAMPPライフを!
※2017/04/15 追記
細かく検証していないのですが、Codeigniterを使用する場合でサブドメインを設定する際、
httpd-vhosts.conf
の Directory
と DocumentRoot
をシンボリックリンク(C:\xampp)で設定するとトップページ(index)以外のリンクで404エラーが発生しました。
C:\dev\xampp%XAMPP_VERSION%
で設定したら上手く表示されます。
※2019/05/20 追加
httpd-vhosts.conf でバーチャルホストを設定した後に、.htaccessファイルと置くと 403のエラーが発生しました。
error.logを確認すると、下記のようなエラー内容でした。
Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also forbidden due to its similar ability to circumvent directory restrictions
結構、がっつりハマったのですがサクッと解決した内容を記載します。
httpd.conf
の250行目付近の <Directory "/xampp/htdocs">
内に
Options Indexes FollowSymLinks
AllowOverride All
を追加します。
恐らく再起動を掛ければいけるはず…
私の場合、失敗したのですが Directory のpathをドライブ名込み <Directory "C:/xampp/htdocs">
でやったらいけました。
サーバー周りは全く知識が足りず、、何故かは分からないのですが、取りあえずこれで解決しました。