前回の記事「PHP5.6からPHP7.2へのバージョンアップで画面が真っ白に!」で書いたように、いままでPHP5.6で使用していたXAMPP。
新しいお仕事ではPHP7.2で開発を行うためにXAMPPのPHPをバージョンアップしたところ、以前の案件で使用していたPDF出力用の mpdf が動かなくなり画面が真っ白になるという現象が起こってしまいました。
今後その案件での作業がなければよかったのですが、たまに機能追加、修正の依頼が来るため使用できなくなるのは都合が悪い。
PHP5.6に戻してしまうという手もあるが、今後のことも考えPHPバージョンを切り替えることが出来ないかと調べてみたところいくつかの記事を発見!。
参考:https://www.m-kobayashi.org/software/tools/Xampp_PHP_VUP.html
そのままでは、うまく行かなかったので
その記事を参考にXAMPPのPHPを切り替えられるようにした手順を記します。
前提条件
私はPHP5.6で動いていたXAMPPのPHPを残したまま、PHP7.2をインストールして動くようにしました。
同じ様に、以前のバージョンのPHPを残した状態で新しいバージョンのPHPで動くようにしていることが前提となります。
(XAMPPフォルダの下に php フォルダがありますが、旧バージョンの php フォルダを php_5.6 などにリネームし、php フォルダには新しいバージョンのPHPを入れる感じになります。)
どちらか一方のバージョンでしか動かしていない場合は、もう一方で動くようにPHPのインストール&設定を済ましておいてください。
その方法とは?
シンボリックリンクを切り替えて実現します。
PHP5.6を php_5.6 というフォルダに入れ、PHP7.2を php_7.2 というフォルダに入れておいたとします。
XAMPPでは xampp\php フォルダに入っているPHPを使用するので、PHP5.6を使用したい場合は xampp/php のシンボリックリンクを php_5.6 に張ると xampp/php にアクセスした際に php_5.6 を参照するようになります。
フォルダ構成
私は Pleiades に入っている XAMPP を使用していますので、そのフォルダ構成で説明します。
違う方は適宜読み替えてください。
D:\pleiades\xampp
+ apache
+conf
+ extra
+ httpd-xampp.conf
+ php
上記以外にもフォルダ、ファイルは存在しますが今回必要になってくるのは httpd-xampp.conf ファイルと、php フォルダになります。
作業
PHPフォルダの変更
まず xampp の下にある php フォルダ名を変更します。
php5.6 → php_5.6
php7.2 → php_7.2
のように変更しました。
php というフォルダ自体は無い状態になります。
httpd-xampp.conf の修正
httpd-xampp.conf のファイル名を httpd-xampp-php.conf に変更します。
ファイルを開き、14行目~36行目の下記部分をコピーして新規にファイルを作成して貼り付けます。
# # PHP-Module setup # LoadFile "D:/pleiades/xampp/php/php7ts.dll" LoadFile "D:/pleiades/xampp/php/libpq.dll" LoadModule php7_module "D:/pleiades/xampp/php/php7apache2_4.dll" <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> # # PHP-CGI setup # #<FilesMatch "\.php$"> # SetHandler application/x-httpd-php-cgi #</FilesMatch> #<IfModule actions_module> # Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe" #</IfModule>
※ファイル内のパスはご自分の環境に合わせて適宜変更してください。
そして一番上に、
Include "conf/extra/httpd-xampp-php.conf"
の1行を追加します。
これは、php7.2 の設定のものなので httpd-xampp-php72.conf というファイル名で保存します。
元の httpd-xampp-php.conf からは、コピー部分の14行目~36行目は削除してください。
PHP5.6用の httpd-xampp.conf がバックアップなどで残っていたら上記と同じ方法でPHP5.6用のファイル httpd-xampp-php56.conf を作ります。
残っていないようでいしたら httpd-xampp-php72.conf をコピーして httpd-xampp-php56.conf にリネーム後中身を変更します。
変更点は、 php7 と出てくるところ4箇所を php5 に変えるだけです。
シンボリック切り替えバッチの作成
コマンドプロンプトから mklink コマンドでシンボリックリンクを設定してもいいですが、そのたびにコマンドを入力するのは面倒なのでバッチファイルを作り簡単に変更できるようにします。
@echo off echo. echo Change the version of PHP to use. echo. php -v echo. echo 1: PHP 5.6 echo 2: PHP 7.2 echo C: Cancel echo. choice /c 12C /M "Choose the version of PHP." if %errorlevel% equ 1 goto PHP_5_6 if %errorlevel% equ 2 goto PHP_7_2 goto OnExit :PHP_5_6 del D:\pleiades\xampp\apache\conf\extra\httpd-xampp.conf mklink D:\pleiades\xampp\apache\conf\extra\httpd-xampp.conf D:\pleiades\xampp\apache\conf\extra\httpd-xampp-php56.conf rmdir D:\pleiades\xampp\php mklink /D D:\pleiades\xampp\php D:\pleiades\xampp\php_5.6 goto OnExit :PHP_7_2 del D:\pleiades\xampp\apache\conf\extra\httpd-xampp.conf mklink D:\pleiades\xampp\apache\conf\extra\httpd-xampp.conf D:\pleiades\xampp\apache\conf\extra\httpd-xampp-php72.conf rmdir D:\pleiades\xampp\php mklink /D D:\pleiades\xampp\php D:\pleiades\xampp\php_7.2 goto OnExit :OnExit
6行目:現在のPHPバージョンを表示
13行目:キー入力待ち
18行目~23行目:PHP5.6用
19行目:httpd-xampp.conf を削除(シンボリックリンクの解除)
20行目:httpd-xampp.conf のシンボリックリンクを設定、httpd-xampp-php56.conf を参照するようにする
21行目:php フォルダの削除(シンボリックリンクの削除)
22行目:php フォルダのシンボリックリンクを設定、php_5.6 を参照するようにする
23行目:処理終了へ
25行目~30行目:PHP7.2用
以下はPHP5.6用の設定と同内容
バッチファイルは任意のところに保存してください。
確認
上記までの作業で下記のような構成になっていると思います。
D:\pleiades\xampp
+ apache
+conf
+ extra
+ httpd-xampp-php.conf
+ httpd-xampp-php56.conf
+ httpd-xampp-php72.conf
+ php5.6
+ php7.2
もともと存在していた php フォルダと、httpd-xampp.conf が無い状態になりますが、シンボリックリンクが張られると表示されます。
切り替え実行~確認
バッチファイルの実行
切り替えバッチファイルを管理者権限で実行します。(バッチファイルの上で右クリックして管理者として実行)
上図では現在、PHP5.6.21であると表示されています。
キーボードから1、または2を入力するとシンボリックリンクが切り替わります。
Apacheの再起動
XAMPPのコンパネから Apacheを「停止」→「開始」を行ってください。
ここでエラーが出てApacheが起動できない場合、何らかの設定が間違っていると思われますので再度確認してみてください
私が実際に陥ったミスは
・httpd-xampp-php72.conf 内に httpd-xampp-php.conf をインクルードする1行を入れ忘れていた
・バッチファイルの記述を間違え、シンボリックリンクが異なるファイルになっていた
など
バージョン確認
PHPのバージョンをブラウザで確認してみます。
<?php phpinfo(); ?>
のファイルを置きブラウザで表示してみます。
PHP5.6の場合
PHP7.2の場合
バージョンが切り替わっていない場合に確認すること
・Apacheは再起動しましたか?
・環境は合っていますか?、例えば複数の XAMPP を入れていて別のXAMPPに対して設定をしていませんか?
まとめ
出来えば最新バージョンで制作していたいというのはあるかもしれませんが、以前に制作したものの修正やメンテナンスで旧バージョンを使用しなければならないということはあります。
今回の切り替えで環境に合わせてPHPバージョンを切り替えられるようになりました。
コメントを残す