私たちの新しい製品はPHP 7を必要とするので、私たちはPHP 7.0でXAMPPを実行しています。
しかし、mysql_connect
などのような関数を使用する古いプロジェクトがあります。それらはPHP 7.0で削除されました。
それで、XAMPPでPHPバージョンを簡単に変更する方法はありますか?
注 :古いプロジェクトを新しいバージョンと互換性のあるものにアップグレードすることはお勧めできません。開発者として決定できないという決定のために、私は実行する立場にはありません(単なる従業員)。
複数のPHP version を単一のxamppインストールと同時に使用できるのに、PHPバージョンを切り替える理由?単一のxamppインストールでは、2つのオプションがあります。
古いプロジェクトのディレクトリに対してのみ古いPHPバージョンを実行します:これはほとんどの目的に役立ちます。1つまたは2つの古いプロジェクトがあり、古いPHPバージョンで実行する予定です。それらのプロジェクトディレクトリに対してのみ古いPHPバージョンを実行するようにxamppを構成します。
xampp:の別のポートで古いPHPバージョンを実行します。必要に応じて、古いプロジェクトを最新のPHPバージョンにアップグレードする場合があります。新旧のPHPバージョンで同じプロジェクトを前後に実行します。その後、別のポート(たとえば8056)に古いPHPバージョンを設定して、http://localhost/any_project/
xamppに移動するとPHP 7に、http://localhost:8056/any_project/
xamppに移動するとPHP 5.6。
virtualhost:で古いPHPバージョンを実行しますPHP 5.6を実行しながらlocalhost56などの仮想ホストを作成してPHP localhost上の7。
設定します。
ステップ1: PHPをダウンロード
PHP 7をxamppの下で実行しているので、PHP 5.6などの古いPHPバージョンを追加します。 PHP Zipアーカイブのnts(非スレッドセーフ)バージョンを php.net からダウンロードします(古いバージョンについては archive を参照) c:\xampp\php56
の下のファイルを抽出します。スレッドセーフバージョンには、php-cgi.exeは含まれていません。
ステップ2:php.ini
を設定
メモ帳でc:\xampp\php56\php.ini
ファイルを開きます。ファイルが存在しない場合は、php.ini-development
をphp.ini
にコピーしてメモ帳で開きます。次に、次の行のコメントを解除します。
extension_dir = "ext"
ステップ3: Apacheの構成
Xamppコントロールパネルを開き、Apacheの設定ボタンをクリックして、Apache (httpd-xampp.conf)
をクリックします。テキストファイルが開き、ファイルの下部に次の設定が配置されます。
ScriptAlias /php56 "C:/xampp/php56"
Action application/x-httpd-php56-cgi /php56/php-cgi.exe
<Directory "C:/xampp/php56">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
注:xamppインストールにPHPのバージョンを追加できます。必要に応じてステップ1から3まで。
ステップ4(オプション1):[特定のPHPバージョンを実行するディレクトリを追加]
PHP 5.6で実行されるディレクトリを設定できるようになりました。構成ファイルの下部に次を追加して、ディレクトリを設定します。
<Directory "C:\xampp\htdocs\my_old_project1">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</Directory>
<Directory "C:\xampp\htdocs\my_old_project2">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</Directory>
ステップ4(オプション2):[古いPHPバージョンを別のポートで実行]
PHP v5.6をポート8056に設定するには、構成ファイルの下部に次のコードを追加します。
Listen 8056
<VirtualHost *:8056>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>
ステップ4(オプション3):[仮想ホストで古いPHPバージョンを実行]
ディレクトリ(htdocs56)に仮想ホスト(localhost56)を作成して http:// localhost56 でPHP v5.6を使用するには、目的の場所にディレクトリhtdocs56を作成し、 localhost56をホストファイルに追加し( how を参照)、httpd-xampp.confファイルの下部に次のコードを追加します。
<VirtualHost localhost56:80>
DocumentRoot "C:\xampp\htdocs56"
ServerName localhost56
<Directory "C:\xampp\htdocs56">
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>
Finish: Apacheを保存して再起動する
設定ファイルを保存して閉じ、xamppコントロールパネルからApacheを再起動します。オプション2を選択した場合、xamppコントロールパネルに追加のポート(8056)が表示されます。
エラーの更新:
スクリプト「php-cgi.exe」の不正なヘッダー:不正なヘッダー
上記のエラーが発生した場合は、httpd-xampp.conf
を再度開き、先頭の#(ハッシュ文字)で次の行をコメントアウトします。
SetEnv PHPRC "\\path\\to\\xampp\\php"
あなたが必要とするPHPのどのバージョンでもダウンロードして、それらをそれら自身のディレクトリに置くことができます。
c:\php5\
c:\php7\
あなたがする必要があるのはあなたのWebサーバ(Apache)にどのバージョンのPHPを使うべきかを伝えることです、あなたはそれを適切なモジュールをロードすることによって行います。 Apacheでは、ファイルhttpd.conf
を見つけて適切な行を編集することでこれを行うことができます。
LoadModule php7_module c:\php7\libphp7.so
あなたはもちろん正しい道を考え出す必要があるでしょう - これは例示のためだけです。
httpd.conf
を保存してサーバーを再起動します。再起動しないと、変更は有効になりません。
これを可能にするGUIスイッチはありません。.conf
ファイルを編集してからApacheを再起動する必要があります。これを実行するのに数秒かかるだけで、バージョンをコメントアウトすることもできます。
PHP 5を使用:
LoadModule php5_module c:\php5\libphp5.so
#LoadModule php7_module c:\php7\libphp7.so
PHP 7を使用:
#LoadModule php5_module c:\php5\libphp5.so
LoadModule php7_module c:\php7\libphp7.so
複数のバージョンのXAMPPは必要ありませんまたは、デュアルブートするか、別のマシンを使用するか、または複雑な回避策を提案しているその他の「ソリューション」を使用します。 OPはXAMPPを使用して、使用するPHPのバージョンを伝えます。これはそれを行うための最も迅速で最も効率的な方法であり、XAMPPのインストールが1つだけ必要です。
2017年1月1日編集: どうやらWindowsに.so
ファイルがないと言う人もいます。私が出した答えは、私のMac上で設定されているもの(.so
の代わりに.dll
ファイルを使用している)からのものです。しかし答えの原理はまだ正確に正しいです。 を指定するためにApacheの設定ファイルhttpd.conf
を使用しています。 - PHPモジュール(.so
または.dll
)はシステム上にあります。したがって、Windowsの唯一の違いは、ファイル名またはパスの場所、あるいはその両方です。私の答えは、Apache/PHPのVanillaインストール(XAMPPなし)にも当てはまります。
Dockerを使用することをお勧めします。これにより、環境をさまざまなコンポーネントに分割し、いつでも必要なものを組み合わせて一致させることができます。
Dockerを使用すると、1つのコンテナをMySQLで、もう1つをPHPで実行できます。別々の画像なので、PHP 5、別のPHP 7の2つのコンテナーを持つことができます。どちらを好み、ポート80を両方のコンテナーにマップできるかを起動します。
https://hub.docker.com には、手間をかけずにインストールして実行できる、さまざまな設定済みイメージがあります。
また、 portainer をイメージとして追加しました。これにより、dockerイメージ内から、docker設定のさまざまな側面を管理できます(コマンドラインを使用しなくても済むように、起動時にこのコンテナを起動しました)。 。それはあなたのためにすべてをするわけではなく、時にはコマンドラインから初めてイメージを設定して起動する方が簡単なこともありますが、一度セットアップすればWebインターフェースを介してイメージを起動および停止できます。
両方のコンテナーを同時に実行し、それぞれに別々のポートをマップすることも可能です。そのため、ポート80はPHP 5に、81はPHP 81にマッピングできます(2017年にこれを見ている場合はPHP 7)。
Dockerのインストール方法に関するさまざまなチュートリアル( https://docs.docker.com/engine/installation/ )およびその他の「使い方」タイプのものがたくさんあります。開発環境の設定については http://www.masterzendframework.com/docker-development-environment/ をご覧ください。
XAMPPには2つの異なるバージョンがあります。
はい、できます。 xamppが既にインストールされていると思います。そう、
複数のxamppをインストールした状態で作業する方法です
これをコマンドプロンプトウィンドウ(cmd.exe)で実行します。
set PATH=C:\xampp\php;%PATH%
php 7をインストールした場所に応じて変更してください。
それが絶対にそして確実にXAMPPである必要がない限り、あなたはWAMPであなたが欲しいものを手に入れることを試みることができます。 WAMPは異なるパッケージでもほぼ同じものです。
インストールしたら、phpのバージョンを切り替えることができます。
必要に応じて、PHPをいくつでもインストールできます。
詳細は次のとおりです。
ただここに行きなさい: WAMPダウンロード
それから、ベースサーバーを選択します。 php7で最新のもの。
それから、WAMP 3がインストールされたら、フォルダに行きます: addons そしてあなたが後になっているphpのバージョンを選択してくださいそれらはmysql_connectで動作するはずのphp 5.3.29から始まるphpフレーバーを提供します。
アドオンをインストールするには、インストール中(exeファイルをダブルクリック)、WAMP 3をインストールしたフォルダを指定してください。
それから、あなたは他のフォルダの内容を使うことができます。 applications など
すべてがインターフェースされているので、コーディングに集中し、環境をハックすることはできません。
1回のXAMPPインストールでPHPの複数のバージョンをセットアップすることが可能です。以下の手順はWindows用です。
C:\xampp\php
がC:\xampp\php-7.1.11
になるように、XAMPPインストールディレクトリのphpディレクトリの名前を変更します。C:\xampp\php-5.4.45
など。これで、XAMPPとApacheの設定を編集する必要があります。
C:\xampp\Apache\conf\httpd.conf
で、PHPのXAMPP設定を探します。次のように変更します。他のPHPバージョンを(#
で)コメントする必要がある場合は、一度に1つのInclude
のみが解釈されます。
#XAMPP settings PHP 7
Include "conf/extra/httpd-xampp.conf.7.1"
#XAMPP settings PHP 5.4.45
#Include "conf/extra/httpd-xampp.conf.5.4.45"
C:\xampp\Apache\conf\extra
ディレクトリでhttpd-xampp.conf
の名前をhttpd-xampp.conf.7.1
に変更し、httpd-xampp.conf.5.4.45
の新しい設定ファイルを追加します。私の場合は、構文がバージョンごとに多少異なる可能性があるため、php 5.5用のXAMPPの別のインストールのconfファイルをコピーしました。
httpd-xampp.conf.5.4.45
とhttpd-xampp.conf.7.1
を編集して、php
ディレクトリへのすべての参照を新しいphp-X.X
バージョンに置き換えます。各ファイルに対して少なくとも10の変更を加える必要があります。
2つのバージョン用にphp.iniを編集する必要があります。たとえば、php 7.1の場合は、C:\xampp\php-7.1.11\php.ini
を編集して、include_path
、browscap
、error_log
、extension_dir
のphpディレクトリのパスを置き換えます。
以上です。これでXAMPPコントロールパネルからApacheを起動できます。あるバージョンから別のバージョンに切り替えるには、Apacheを再起動する前にC:\xampp\Apache\conf\httpd.conf
を編集して含まれているPHPバージョンを変更するだけです。
_ mamp _ :)を使用するだけで、この設定で時間を無駄にする必要はありません。
MAMPはインタフェースにPHPバージョン選択機能を持っています。
私はUniserverを使用しています。
この機能が組み込まれています。
http://www.uniformserver.com/ /
それはとても簡単です。
Uniform Serverは、Windows用の無料の軽量WAMPサーバーソリューションです。 24MB未満のモジュラー設計には、Apache2、Perl5、PHP(PHP53、PHP54、PHP55、またはPHP56の間の切り替え)、MySQL5またはMariaDB5、phpMyAdmin、またはAdminer4の最新バージョンが含まれます。インストールは不要です。レジストリダストはありません!開梱して起動するだけです。
それはフラッシュドライブからも実行されます。 cronエミュレーション、Perlのサポート、mariaDB、いくつかのバージョンのMysql、filezillaサーバー、その他いくつかのものがあります。
これに従ってください 簡単な手順 。私は現在PHP 7.2でXAMPPを実行していますが、古いプロジェクトで作業するにはPHP 5.6が必要です。
ステップ1
Thread SafeバージョンのPHPを https://windows.php.net/download にダウンロードします。
あなたの[ドライブ]にファイルを入れてください:\ xampp\php5.6
ステップ2
[Drive]をコピーします。\ xampp\Apache\conf\extra\httpd-xampp.conf
[Drive]:\ xampp\Apache\conf\extra\httpd-xampp5.6.confに変更します。Phpのバージョンに応じてファイル名を変更します。
ステップ3
新しく作成した 'httpd-xampp5.6.conf'を編集します
基本的にはAll PHP sourceと.dllを変更する必要があります。
前
LoadFile "C:/xampp/php/php7ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php7_module "C:/xampp/php/php7Apache2_4.dll"
後に
LoadFile "C:/xampp/php5.6/php5ts.dll"
LoadFile "C:/xampp/php5.6/libpq.dll"
LoadModule php5_module "C:/xampp/php5.6/php5Apache2_4.dll"
これが私のファイルです: https://Gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec
ステップ4
ファイル[Drive]を編集します。\ xampp\Apache\conf\httpd.conf
前
# XAMPP settings
Include "conf/extra/httpd-xampp.conf"
後に
# XAMPP settings
Include "conf/extra/httpd-xampp5.6.conf"
ステップ5
PHP 5.6設定を編集します - php.ini
拡張ディレクトリを追加します。extension_dir = "C:\ xampp\php5.6\ext"
ステップ6
Apacheを起動する
ステップ7
WindowsでPHP環境変数パスを編集する
これはおそらく質問に対する最も技術的な答えではありませんが、達成するのが最も簡単な方法でもあります。
C: と D: のように2台のドライブがある場合は、両方のドライブに異なるバージョンのphpを使用してXAMPPの個別のインスタンスをインストールできます。これには10分もかかりませんでしたが、間違いはほとんどありません。
Xampp-control.exeの両方に2つのデスクトップショートカットを作成し、それらのphpバージョンに基づいてショートカットに名前を付けます。私はこれが私のような誰かがとても早く汚い解決策を好むのに役立つことを願っています。
私は同じことをする必要があったので、私はどうやってグーグルし、OPが同じ問題を抱えていたところでスタックオーバーフローを起こしました。長すぎる。私はここからバージョン7をインストールしました。
https://www.apachefriends.org/index.html (試行する前にサービスを終了し、xamppを終了します)
どこにディレクトリ名を付けるのかと聞かれたときは(別の名前を付けてください):
そして
ドネゾ!今ちょうどちょうど前後に交換する前にサービスを殺し、やめることを確かめなさいそしてあなたに遊ぶべき2つの生殖不能のXAMPP envsがある。
万歳!今私は実際に仕事に就くことができます!
少し遅れるかもしれませんが、PHPフォルダの名前を変更するためにバッチを使用しています( phpswitchを少し修正したもの 何年も前に見つけました)。
XAMPPインストールにさまざまなフォルダをコピーします。それぞれのPHPフォルダ(アクティブなものを除く)はサフィックスとしてバージョン番号を受け取ります(例: php_5.6.32) _ all _ PHPフォルダに、それぞれのバージョン番号のみを含むファイル(PHP_VERSION)が作成されるので、スクリプトはこの情報を取得できます。しかし、それはすべてREADMEに記載されています。
PHP7以降 httpd-xampp.conf ロードする php7ts.dll の代わりに php5ts.dll。そのため、私はスクリプト(PHPSwitch.php)を拡張して、同じ方法でこれらの設定ファイルの名前を変更する必要がありました。
$renameCur = new PHPSwitch_Rename($currInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName'] . '_' . $currInst['version']);
$renameNew = new PHPSwitch_Rename($newInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName']);
$Apache_curent = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp.conf";
$Apache_curent_rename = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp_".$currInst['version'].".conf";
$Apache_new = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp_".$newInst['version'].".conf";
$Apache_new_rename = $this->_cfg["phpInstallationsPath"]."Apache/conf/extra/httpd-xampp.conf";
$renameCur_Apache_conf = new PHPSwitch_Rename($Apache_curent, $Apache_curent_rename);
$renameNew_Apache_conf = new PHPSwitch_Rename($Apache_new, $Apache_new_rename);
$transaction = new PHPSwitch_Rename_Transaction();
$transaction->add($renameCur);
$transaction->add($renameNew);
$transaction->add($renameCur_Apache_conf);
$transaction->add($renameNew_Apache_conf);
私は仕事で10年前のプロジェクトに取り組んでいます。 5.6が私のデフォルトです。 5.2でのみ動作する古い小さなプロジェクトもあります。また、7.3.8で個人用プロジェクトの新しいバージョンで作業したいです。
以下は、デフォルトの5.6バージョンに5.2と7.3.8を追加するために行ったことです。
1-ダウンロードされたphp TSバージョン。
v7.3.8(最新): https://windows.php.net/download/
2-c:\ xampp\php738およびc:\ xampp\php52フォルダーに順番に抽出
3-これらの行をhttpd-xampp.conf(またはhttpd.conf)の下部に追加しました。
***重要なお知らせ:スクリプトエイリアス名をターゲットフォルダー名として使用しないでください。異なる名前を使用する必要があります。 (たとえば、/ php7xは大丈夫ですが、/ php7は大丈夫ではありません)
ScriptAlias /php7x "C:/xampp/php738"
Action application/x-httpd-php7-cgi /php7x/php-cgi.exe
<Directory "C:/xampp/php738">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
<Directory "D:\www\php7">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php7-cgi
</FilesMatch>
</Directory>
ScriptAlias /phpold "C:/xampp/php52"
Action application/x-httpd-phpold-cgi /phpold/php-cgi.exe
<Directory "C:/xampp/php52">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
<Directory "D:\www\php52">
<FilesMatch "\.php$">
SetHandler application/x-httpd-phpold-cgi
</FilesMatch>
</Directory>
詳細な回答をしてくれた@Munim Munnaに感謝します。上記の重要なお知らせとともに、しっかりしたサンプルを共有したいと思いました。