TOP » WEB » PHP » XamppのPHPを5から7にアップデート
XamppのPHPを5から7にアップデート

XamppのPHPを5から7にアップデート

Xamppをインストールしたのが随分前の話なのでPHPも5系と古く、最近のレンタルサーバーはPHPが軒並み7系が当たり前になってきたので、そろそろローカルのPHPも合わせて7系にした方が都合良いよなと思い立ち、先駆者たちの記事を参考に実際にやってみた。

PHPのダウンロード

何はともあれまずはPHPをダウンロードしないと始まらないので、下記のURLよりPHPをダウンロードしてくる。

https://windows.php.net/download/

ここで64bitと32bitのどちらかを選ぶことになるけどXampp内のPHPは32bitで動いているらしいので「x86」の32bit版の方をダウンロードする。
PCが64bitだからといってここも64bit版をダウンロードしてもエラーでApacheが起動しないので注意。

またbitの違い以外にもスレッドセーフ版とノンスレッドセーフ版があるけど、詳しいことは分からないけどとにかくスレッドセーフ版を選んでおけば問題ないもよう。

ということで今回はこの記事を書いている時点での最新Ver「7.3」の32bitスレッドセーフ版をダウンロードする。

PHP.iniファイルの設定

ダウンロードできたらまず「php.ini-development」というファイルをコピーしてファイル名を「php.ini」に変更して編集していく。

最初にPHPの拡張モジュールのディレクトリを指定する。
752行目付近の「;extension_dir = “ext”」という記述があるので、先頭の「;」を削除して「ext」部分を現在のxampp内にあるphp.iniを参考に同じパスを記述する。

ついでに最大アップ可能ファイルサイズを2MBから30MBに変更して最大アップ可能ファイル数も20から30に変更して以前の設定と合わせておいた。

911行目付近に使用する拡張モジュールの一覧が記述してあるので、こちらも現在のphp.iniを参考に必要なモジュールの頭の「;」を削除して有効化。

あと479行目付近の「display_errors」と490行目付近「display_startup_errors」を「On」に変更してエラー内容を表示するように変更。
エラーメッセージにhtmlタグを含ませるかどうかの「track_errors」は前回はOnだったけど今回はOffのままにしてみる。

PHPディレクトリの差し替え

ここまで終わったら、xamppフォルダ内のphpフォルダ(現在使用しているverのPHP)を「php5.6.15」などの任意の名前にリネームして、にっちもさっちもいかなくなった時に戻せるように残しておく。
そして先ほどphp.iniを編集した新しいPHPが入っているディレクトリ名を「php」としてxamppディレクトリ直下にアップする。

Apacheの設定

これでPHPのファイル自体の差し替えは完了したので次はApacheの設定ファイルに明確にVer7を使うことを明示。

ファイルの場所は「【xamppのインストールディレクトリ】/apache/conf/extra/http-xampp.conf」

ファイル内の記述に「php5」というように以前のバージョンの数字がいくつか見られるので一括置換で全て「php7」に変更。

これでPHPのバージョンの切替は完了!
早速XamppコントロールパネルからApacheを起動してみる。

エントリポイントが見つかりません

・・・

プロージャエントリポイント libssh2_scp_recv2 がダイナミックリンクライブラリ D:\works\php\ext\php_curl.dll から見つかりませんでした。」という訳の分からないエラーが立て続けに2回も出る。重要なことなので2回言ってるのか。
ただApache自体は起動しているようで、PHPもちゃんと認識されているぽい。

とりあえず問題になってるらしい「php_curl.dll」というファイルを開いて中を見てみようとするも、なんか文字化けした文字列が出てるだけだったのでそっ閉じ・・・。

ネットで色々調べてみるけど今一ピンポイントでこれといった解決策が見つかることもなかったので、残しておいた古いPHPディレクトリから同じファイルをコピーして差し替えたらエラーが出なくなったのでとりあえず良しとしておく。ちょっと怖いけど。

phpMyadminの警告

今のところPHPの動作に問題はなさそうだけど、phpMyAdminで何か警告文が出るようになっていた。

“continue” targeting switch is equivalent to “break”. Did you mean to use “continue 2”?

うーん・・・?良く分からん。
調べてみたらPHP7.3からcontinueをbreakの代わりに使ったらWarningになるらしいんで、その辺のことかな?
今のところ特に問題はなさそうなので大丈夫ということにしておこう!