Baccho Log

No Image

Sponsored Link

[XAMPP]複数のバージョンのPHPを使い分ける

  • 投稿日:
  • 更新日:
Tags:
PHP XAMPP
Categories:
プログラミング

概要

XAMPPでPHPのバージョンを使い分けます。

関わっている案件によって開発環境が異なると思いますが、せめてPHPのバージョンは案件に合わせて開発したいなという思いが発端です。

そのうち、CentOS7 + Vagrant + Virtual Box でも試してみたいと思います。

環境

Windows10 Pro 64bit

参考サイト 様

Punio Kid Works
Arubeh Inc.

手順

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.confDirectoryDocumentRoot をシンボリックリンク(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"> でやったらいけました。
サーバー周りは全く知識が足りず、、何故かは分からないのですが、取りあえずこれで解決しました。

« 複数の画像を壁紙として設定する方法[PHP, MySQL]phpでのMySQL操作 »

Sponsored Link

コメントする

記事の感想や修正依頼等ありましたら、コメントをお願いいたします