eyecatch php

Apache PHP Windows

【PHP】Window10環境でPHP5とPHP7を切り替える方法

2019/11/14

Windows10(64bit版)にPHP5系統とPHP7系統をインストールし、動作確認や開発を行いたい時にバージョンを切り替える方法を備忘録としてポストしたいと思います。

PHP7をインストールする前に、Apache2.4 と PHP5.6 を Windows10 へインストールした方法です。

Windows10(64Bit版)にApache2.4、PHP5.6をインストールする方法

上記で作成した環境へPHP7.2系統をインストールし、PHPのバージョンを切り替えたいと思います。

なお、この記事を作成したいる段階での7.2系統の最新版は「7.2.24」ですが、私がインストールしたときのPHP7.2系の最新版がPHP7.2.23だったため、最終的な画面のキャプチャでは「PHP7.2.23」となっていますが、その他のキャプチャでは7.2.24となります。

実際のPHPバージョンの切替方法ですが、実に泥臭いことをして切り替えています。

先にその方法を書くと、Apache2.4の設定ファイルである「httpd.conf」にPHP5系統・7系統の設定を書き、一方をコメントアウトしてApacheの再起動する、という方法を採用しています。

XAMPPではなく、ApcheとPHP、MySQLなど全て手動でインストールしているためこのような方法となっていますが、慣れれば2分以内に切り替えができます(苦笑)

PHP7.2.24のインストール

ダウンロード

ではダウンロードから。

上記サイトより Thread Safe 版である『VC15 x64 Thread Safe (2019-Oct-22 19:00:14)』をダウンロードします。

↑ これをダウンロードします

↑ ダウンロードした『php-7.2.24-Win32-VC15-x64.zip』

↑ zipファイルを展開したところ

先のPHP5.6系統と同じようにするため「C:\Program Files」内へ「php7」フォルダを作成し、zipファイルの内容物を全て展開します。

php.iniの編集

展開したファイル群中に

  • php.ini-production
  • php.ini-development

と同じようなファイルが2つあるので、「php.ini-development」の方を別名コピーして「php.ini」とします。
作成した「php.ini」をメモ帳や秀丸等のエディタで開き、内容を編集します。

管理者権限が必要と言われますので、上図のようにエディタを起動する際に右クリックの「管理者として実行」で起動すると幸せになれるかもしれません。

以下、変更点を列挙します。
「Progrem Files」と半角スペースを含むので、必ず、ダブルクォーテーションで括り、エンマークではなく、スラッシュで記述してください。

[php]
; 拡張モジュールのディレクトリ設定
extension_dir = "C:/Program Files/php7/ext"

; タイムゾーン設定
date.timezone = "Asia/Tokyo"

; スクリプト実行時のタイムアウト時間
max_execution_time = 300

; リクエストパラメータを解析する最大時間
max_input_time = 300

; スクリプトが確保できる最大メモリ
memory_limit = 1024M

; 表示させるエラー種類
error_reporting = E_ALL & ~E_NOTICE

; POSTデータに許可される最大サイズ
post_max_size = 1024M

; Apacheをインストールしたあとに設定
doc_root = "C:/Program Files/Apache24/htdocs"

; アップロードされるファイルの最大サイズ
upload_max_filesize = 1024M

; デフォルトの文字コード設定
default_charset = "UTF-8"

; mbstringのデフォルト言語設定
mbstring.language = Japanese

; HTTP入力文字のエンコーディングを内部文字のエンコーディングに自動的に変換するかどうか
mbstring.encoding_translation = Off

; 文字コードを自動検出する際の優先順位
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

; 変換に失敗した場合など、文字が変換できないときに使用される文字
mbstring.substitute_character = none

; HTTPのレスポンスにPHPのバージョン情報を出力するX-Powered-Byヘッダを含めるかどうかを設定
expose_php = Off

; 下記拡張モジュール(extension)のコメントアウトを外して有効にする
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll

; 以下はPHP5.6以降で非推奨になっているのでコメントアウトする
;mbstring.internal_encoding =
;mbstring.http_input =
;mbstring.http_output =
[/php]

Apche2.4の設定

いよいよPHPを切り替えるための設定を作成します。
編集するファイルは Apacheをインストールしたフォルダの conf にある「httpd.conf」ファイル。

PHP5.6 をインストールするのにも同様の設定を書きましたが、apache の起動時にどのバージョンの PHP と連携するのかという箇所を追加するだけです。

設定の記述に必要となるファイルは以下の2つです。

  • php7apache2_4.dll
  • php.ini

以下のように記述。

[php]
LoadModule php7_module "C:/Program Files/php7/php7apache2_4.dll"
PHPIniDir "C:/Program Files/php7"
[/php]

設定自体はわずか2行でお終いです。なんてお手軽。

PHP5の設定をコメントアウトし、PHP7の設定を生かした状態でApacheの再起動を行い、おなじみ phpinfo.php を作成しファイルを任意のディレクトリへ作成してアクセスすると、、、、

はい、来ました!

以上で、PHP5系統、PHP7系統の切り替えができる環境の構築が完了です。

コマンドラインからのPHP実行について

ブラウザでPHP7が稼働している状態でコマンドプロンプトを立ち上げて php -v すると、結果は(私の場合は)PHP5.6と表示されます。

これは、先の5.6をWindows10へインストールするポスト内で、環境設定からPHPへのパスを通している段が合ったと思います。そこでPHP5.6へのパスを設定していると、当然ながらコマンドプロントから実行するPHPはバージョン5.6となってしまいます。
察しの良い人はわかると思いますが、コマンドプロンプトから実行するPHPと、Apache2.4にて連携するPHPとは全く別の話ということです。なるほどですね。

-Apache, PHP, Windows
-,