XAMPP Windows 複数のPHPバージョンを切り替える 共存

IT関連

なんちゃってWebプログラマーの俺が、会社でなんちゃってプログラムを作っている話なので、話半分に聞いてほしい。というか、自分の備忘録です。

 

会社の基幹サーバに対してWebで照会するプログラムを作ろうと、PHPを勉強してサーバを勉強して、一気にハードル上げてLaravelで開発をしていた。

 

まだ本番環境には移せていないが、LAMP環境に移して実行できたので大丈夫だと踏んでいる。

 

ところで開発環境はXAMPPを使っているのだが、なにげに最新バージョンを入れていた。ときにLaravelの新しいのはPHPのバージョンが7.1以上ないと動かないらしい。できれば7.2だ。

 

XAMPPの最新を入れたらPHP7.2がもれなく付いてくるので、願ったりかなったりだった。そこまではいい。

 

しかし、この度外注にお願いしたECサイトを自社でも開発できるようにしてもらうため、開発環境を私のXAMPPに入れようと、我が社まで出向いて教えてくれたのだが、全く動かないのだ。

 

で一週間後に再びやってきて彼らが言うには、そのプログラムはPHP5.6でしか動かないというのだ。なんだよそれ。

 

そこで外注の会社が言うには、「別バージョンのXAMPPを共有する方法が載っているサイトを紹介するので、それを見て入れてみてください」と言うのだ。

 

とりあえず私はそれを見てやってみようとするのだが、そのサイトは肝心な説明が抜けているせいか、私の状況とは全く違うので、理解も動作もしなかった。私の状況とは、すでにXAMPPが入っていて既存のMySQLのデータベースを使いたいという状況だ。

 

これは開発会社が暗に私に諦めろと言ってるに違いない。ECサイトを素人の我が社が開発したいなどと生意気なこと言いやがってとクズが身の程を知れと、突き放して私があたふたするのを高見の見物をしようというのだろう。

 

そうはいかんざきだ←古い

 

ここからが本題。ハッキリ言って動いたというレベルなので効率のいいやり方があれば教えてほしい。

 

まずここにアクセスして、5.6系の一番新しいやつを取得した。https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/

 

紹介されたサイトではzipや7でダウンロードするよう書いてあったが、.exeのファイルでやってみることにした。

 

で、既存のXAMPPはc:\xamppと、Cドライブ直下においてあるので、この度インストールするフォルダはc:\xampp56とでもしてみた。

 

するとCドライブ直下にはxampp56ができ、もちろんc:\xamppと同じような内容が一式入った。

 

再度説明すると、従来の7.2がC:\xamppで、新しく入れたのがC:\xampp56となった。それぞれにプログラム群が入っている。もちろんMySQLもだ。

 

だがMySQLは7.2側のフォルダに入っているのを使いたいので、PHPだけは5.6側を使えるように切り替えたいということになる。

 

別のサイトには環境変数やらシンボリックリンクやら謳っていたが意味がわからん。(解るけど動かん)

 

ときにデスクトップにはすでにXAMPPコントロールパネルを起動するショートカットアイコンがすでにある。これxampp56を入れる前からあったC:\xamppの分だ。

 

C:\xampp56の中にあるコントロールパネルのexeで起動してみたところ、まったく同じ画面が立ち上がる。だが触っていると確かにc:\xampp56を参照しているようだ。なるほどコンパネの見た目は同じだけどまた別物なんだな。

 

そこでxampp56の方のApacheをStartさせようとすると、Problem detected! Port 80 in use by “”C:\xampp****httpd.exeというエラーになる。

 

おっと、7.2側のApacheが(自動)起動していた。これは失礼。

 

7.2側のApacheをStopさせてから、5.6側のApacheを起動させてみる。すると何も反応がない。もう一度Startを押してみると、Port 80 in use by “”C:\xampp\apache\bin\httpd.exeというエラーが表示された。もう80ポートは使ってるぞという内容だ。

 

は?と思って、7.2側のコントロールパネルを見てみると、Apacheが起動している。もう一回落として5.6側で立ちあがてみると、7.2側のコントロールパネルがONになった。

 

なるほど。サービス(プログラム)的には同じだから連動しちゃうんだな。

 

結局はどっちを起動しても、C:\xampp\apache\bin\httpd.exeを起動しちゃうから、これをC:xampp56\apache\bin\httpd.exeを起動できるようにしないといけないということみたい。

 

Windowsの検索窓にサービスと入力しサービスを呼び出す。Win10になった楽になったもんだ。そしてApache2.4のプロパティを見てみる。すると、実行ファイルのパスがすでにC:\xampp\になっている。

 

これを変更すればいいのだなと思ったが、ここでは変更できないようだ。

 

調べていくと、この値はレジストリを替えないといけないみたい。

 

再び検索窓にregeditと入力してレジストリエディターを起動する。

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4の中にある、ImagePathのデータ域を替えてあげるといいみたい。

 

xamppの後ろに、56を追記して、xampp56にしてあげた。

 

そして再度xampp56側のコントロールパネルからApacheを起動すると、xampp56側のApacheが起動した。

 

おもむろにドキュメントルートにECサイトのスクリプトを一切合切を放り込んで、ドキュメントルートにアクセスしてみると、驚くことにあれだけ頑なだったECサイトがちゃんが動いてくれた。

 

これでいいんでね?レジストリの値を取得してxamppだったらxampp56にして、xampp56だったらxamppに切り替えるバッチを作れば実質切り替えれたということになるし(作ってない)

 

これでMySQLは旧のフォルダにあるものを使えて、実質PHPとApacheだけ旧側で動かすことができた。

 

ただし、ポートやアドレスを替えたからといって、同時に動かすことはできないようだ。そうそうhttpd.confを直してあげないといけないな。

 

以上、ぶっ壊れても大丈夫な人だけ参考にしてほしい。責任は一切負いません。

コメント

タイトルとURLをコピーしました