PHP7.2 にバージョンを上げる

公開日:2018-05-30

1. 概要

Pleiades に入っている PHP のバージョンが 5.6.34 だったため、PHP7.2 にバージョンを上げます。
PHP7.2 の機能を使わなければ、特にやらなくても問題ありません。そのままでも PHP は正常に動作します。


2. PHPのバージョンの確認

XAMPP を起動して、http://localhost/dashboard/ にアクセスします。
画面右上の PHPInfo をクリックすると、画面に PHP の情報が表示されます。
以下の画面より、PHP Version 5.6.34 であることがわかります。

2. ダウンロード

http://php.net/ にアクセスします。
画面上部メニューの Downloads をクリックします。
Current Stable PHP と書いてあるところの下の Windows downloads をクリックします。
すると、以下のグレーの枠が4つ表示されますので、VC15 x86 Thread Safe の Zip をクリックしてください。
・VC15 x64 Non Thread Safe
・VC15 x64 Thread Safe
・VC15 x86 Non Thread Safe
・VC15 x86 Thread Safe

Non Thread Safe版は、ダウンロードするとわかりますが、 php7apache2_4.dll などの apache と連携するためのファイルが入っていないため、 apache のモジュールとしてPHPを使用することができません。
Non Thread Safe版は、CGI や Nginx などで PHP を使う場合に使用します。

ちなみに、64bit版の Pleiades をダウンロードした場合でも、PHP は 32bit版をダウンロードするようにしてください。
この記事を書いている時点では、Pleiades の中の apache は 32bit版のため、PHP だけ 64bit にすると、apache との連携時にエラーが発生します。

3. PHP7への変更

ダウンロードした zip ファイルを php7.zip にリネームしてから解凍します。
解凍した php7 フォルダを、C:/pleiades/xampp に移動します。
これで、xampp 配下には、php と php7 が存在することになります。

次に、既存の php が誤動作すると原因がわかりづらいため、 php のフォルダ名を「php_使わない」とリネームします。
もうこのフォルダは使いません。何かあった場合のために残すだけで、削除しても問題ありません。

次は、apache と php7 との連携の設定です。
apache はまだ php7 の存在を知らないため、 apache に教えてあげる必要があります。

apache の設定ファイルは、C:/pleiades/xampp/apache/conf/httpd.conf です。
xampp の apache では、「Include "conf/extra/httpd-xampp.conf"」としているため、
PHP との連携は C:/pleiades/xampp/apache/conf/extra/httpd-xampp.conf に定義してあります。

httpd-xampp.conf をエディターで開き、フォルダに該当する「php」の文字列を「php7」に置換します。
事前に httpd-xampp.conf のバックアップを取っておくと良いかもしれません。
今回置換したのは以下の通りです。この他にあったらそれも置換してください。
置換リスト
SetEnv MIBDIRS "/pleiades/xampp/php7/extras/mibs"
SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php7"
SetEnv PHPRC "\\xampp\\php7"
LoadFile "/pleiades/xampp/php7/php5ts.dll"
LoadFile "/pleiades/xampp/php7/libpq.dll"
LoadModule php5_module "/pleiades/xampp/php7/php5apache2_4.dll"
PHPINIDir "/pleiades/xampp/php7"
ScriptAlias /php-cgi/ "/pleiades/xampp/php7/"
<Directory "/pleiades/xampp/php7">
次に、「php5」を検索して、「php7」に置換します。
今回置換したのは以下の通りです。
置換リスト
LoadFile "/pleiades/xampp/php7/php7ts.dll"
LoadModule php7_module "/pleiades/xampp/php7/php7apache2_4.dll"
<IfModule php7_module>
<IfModule php7_module>
<IfModule php7_module>
httpd-xampp.conf の中に、単純な phpフォルダと、php5 がなくなればOKです。
念のため、置換した php7ts.dll と php7apache2_4.dll のファイルが実際にあるのかを確認してください。
もしない場合は、php を間違えてダウンロードしている可能性があります。

次に、xamppを再起動してます。
http://localhost/ にアクセスして、画面上部の PHPInfo をクリックして、PHP Version 7 になっていればOKです。

もし以下のエラーが出た場合は、 apache と PHP の bit数があっていない可能性がありますので、 異なるbit数のPHPをダウンロードして、PHP7 フォルダを入れ替えて試してください。
エラー
httpd.exe: Syntax error on line 532 of C:/pleiades/xampp/apache/conf/httpd.conf: 
Syntax error on line 17 of C:/pleiades/xampp/apache/conf/extra/httpd-xampp.conf: 
Cannot load c:/pleiades/xampp/php7/php7ts.dll 
into server: %1 \x82\xcd\x97L\x8c\xf8\x82\xc8 
Win32 \x83A\x83v\x83\x8a\x83P\x81[\x83V\x83\x87\x83\x93\x82\xc5\x82\xcd\x82\xa0\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B

最後に、
php.ini-development をコピーし、リネームして php.ini を作成してください。
php.ini-production もありますが、こちらは本番環境用で、php でエラーが発生しても、画面にエラー内容が表示されなくなります。

また、CakePHPの新規プロジェクトの作成 で、追加の設定を行っています。
CakePHP を使わない場合でも、見ると何かの参考になるかもしれません。