osx catalinaでphpの7.1〜7.3をいつでも切り替え可能にする。

Mac
この記事は約8分で読めます。
記事内に広告が含まれます。
スポンサーリンク

動作環境

osxはcatalinaで検証していますがmojaveでも同様に動作すると思います。

概要

Macには標準でphp7.1が導入されています。
しかし、このPHPはbrewでインストールしたものではないためバージョンの切り替えが面倒です。
そこで、Brewコマンドでphpの7.1、7.2、7.3をインストールし、switch-phpコマンドでいつでも簡単にPhpのバージョンを変更できるようにします。
PhpのVersionごとに違うxdebugもVersionごとに適切に切り替わるようにします。

準備

switch-phpはvaletを自動的に再起動してくれるようです。Valetを使っているひとは更に便利です。

手順

まずはPHPの7.1〜7.3をインストールします。

% brew install php@7.1
% brew install php@7.2
% brew install php@7.3

次にswitch-phpをインストールします。

% npm install --global switch-php

switch-phpはメモリ使用量を設定できるようになっていたりコマンドで設定できます。※開発では便利ですね。👌

操作例)
% switch-php 7.1 -m 512M       # php@7.1 with 512MB of memory
% switch-php 7.3 -m 2G -v      # php@7.3 with 2GB of memory; verbose output
% switch-php 7.2 --memory=1G   # php@7.2 with 1GB of memory

ここまででPHPの切り替えはできるようになっていますので、ここからxdebugの設定を行っています。

では最初にphp7.1に切り替えます

% switch-php 7.1

この状態でxdebugをインストールします。

% pecl install xdebug​

pecl installはコンパイルを行います。
この時点でエラーが出るようでしたらxcodeのインストールに問題がある可能性がありますのでxcodeのインストールを確認してみてください。

続けてphp7.2に切りかえxcodeのインストールを行います。

% switch-php 7.2
% pecl install xdebug​

さらに続けてphp7.3に切りかえxcodeのインストールを行います。

% switch-php 7.3
% pecl install xdebug​

すべてのVersionでインストールが終了すると
usr/local/lib/php/pecl/ 以下にフォルダーが作成されているはずです。

% ls usr/local/lib/php/pecl/
0160303/ 20170718/ 20180731/

おそらくこんな感じのフォルダーが作られます。
20160303/ ←php7.1用
20170718/ ←php7.2用
20180731/ ←php7.3用
それぞれのディレクト以内にVersion毎のxdebug.soファイルが作成されます。

今度はそれぞれの環境用にxdebugの設定を記述します。

php7.1の設定

% vi /usr/local/etc/php/7.1/php.ini
;zend_extension="xdebug.so"  // この行は不要なのでコメントアウトします
[PHP]

;;;;;;;;;;;;;;;;;;;
; About php.ini   ;
;;;;;;;;;;;;;;;;;;;
; PHP's initialization file, generally called php.ini, is responsible for
; configuring many of the aspects of PHP's behavior.

xdebug.iniファイルを作ります

% vi /usr/local/etc/php/7.1/conf.d/ext-xdebug.ini

内容は以下の通り

[xdebug]
zend_extension="/usr/local/lib/php/pecl/20160303/xdebug.so"
xdebug.remote_autostart=1
xdebug.default_enable=1
xdebug.remote_port=9001
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM

php7.2の設定

% vi /usr/local/etc/php/7.2/php.ini
;zend_extension="xdebug.so"  // この行は不要なのでコメントアウトします
[PHP]

;;;;;;;;;;;;;;;;;;;
; About php.ini   ;
;;;;;;;;;;;;;;;;;;;
; PHP's initialization file, generally called php.ini, is responsible for
; configuring many of the aspects of PHP's behavior.

ext-xdebug.iniを作成します

% vi /usr/local/etc/php/7.2/conf.d/ext-xdebug.ini

内容はこちら

[xdebug]
zend_extension="/usr/local/lib/php/pecl/20170718/xdebug.so"
xdebug.remote_autostart=1
xdebug.default_enable=1
xdebug.remote_port=9001
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM

php7.3の設定

% vi /usr/local/etc/php/7.3/php.ini
;zend_extension="xdebug.so"  // この行は不要なのでコメントアウトします
[PHP]

;;;;;;;;;;;;;;;;;;;
; About php.ini   ;
;;;;;;;;;;;;;;;;;;;
; PHP's initialization file, generally called php.ini, is responsible for
; configuring many of the aspects of PHP's behavior.

ext-xdebug.iniファイルを作成します

% vi /usr/local/etc/php/7.3/conf.d/ext-xdebug.ini

内容はこちら

[xdebug]
zend_extension="/usr/local/opt/php@7.3/pecl/20180731/xdebug.so"
xdebug.remote_autostart=1
xdebug.default_enable=1
xdebug.remote_port=9001
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM

以上で完了です

正しくVerrsionが変更され、xdebugが動作しているかチェックします。

% switch-php 7.1
Valet stopped ✔
PHP switched ✔
Valet started ✔

You are now using PHP 7.1.32
% php -v
PHP 7.1.32 (cli) (built: Oct  6 2019 20:44:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.32, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans

% switch-php 7.2
Valet stopped ✔
PHP switched ✔
Valet started ✔

You are now using PHP 7.2.23
% php -v
PHP 7.2.23 (cli) (built: Oct  3 2019 19:50:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.23, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans

% switch-php 7.3
Valet stopped ✔
PHP switched ✔
Valet started ✔

You are now using PHP 7.3.9
% php -v
PHP 7.3.9 (cli) (built: Sep  8 2019 14:56:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.9, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.9, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans

すべてXdebugが有効になっているのを異確認したら終了です。
お疲れさまでした。

コメント

タイトルとURLをコピーしました