11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Macで複数のバージョンのPHPを同時に使う

Last updated at Posted at 2021-05-05

この記事で紹介している手動のインストールを、自動で行う新しい記事「PHPComplete: 複数のPHPバージョンを一括インストール」を公開しました。


概要

Macで複数のバージョンのPHPをXdebugと共にインストールして利用可能にします。その際なるべくグローバルに影響を与えない方法で行います。phpenv などの管理ツールは利用しません。

PHP

shivammathur/php を使ってbrewでインストールします。PHP5.6からサポートされています。

brew tap shivammathur/php
brew install shivammathur/php/php@5.6
brew install shivammathur/php/php@7.0
brew install shivammathur/php/php@7.1
brew install shivammathur/php/php@7.2
brew install shivammathur/php/php@7.3
brew install shivammathur/php/php@7.4
brew install shivammathur/php/php@8.0
brew install shivammathur/php/php@8.2
brew install shivammathur/php/php@8.2

PHP8.0の場合、以下のパスにインストールされます。

  • Appleシリコン CPUの場合
/opt/homebrew/opt/php@8.0/bin/php
  • Intel CPUの場合
/usr/local/opt/php@8.0/bin/php

Xdebug

peclでインストールします。

  • Appleシリコン CPUの場合
/opt/homebrew/opt/php@5.6/bin/pecl install xdebug-2.5.5
/opt/homebrew/opt/php@7.0/bin/pecl install xdebug-2.7.2
/opt/homebrew/opt/php@7.1/bin/pecl install xdebug-2.9.8
/opt/homebrew/opt/php@7.2/bin/pecl install xdebug-3.1.6
/opt/homebrew/opt/php@7.2/bin/pecl install xdebug-3.1.6
/opt/homebrew/opt/php@7.3/bin/pecl install xdebug-3.1.6
/opt/homebrew/opt/php@7.4/bin/pecl install xdebug-3.1.6
/opt/homebrew/opt/php@8.0/bin/pecl install xdebug
/opt/homebrew/opt/php@8.1/bin/pecl install xdebug
/opt/homebrew/opt/php@8.2/bin/pecl install xdebug
  • Intel CPUの場合
/usr/local/opt/php@5.6/bin/pecl install xdebug-2.5.5
/usr/local/opt/php@7.0/bin/pecl install xdebug-2.7.2
/usr/local/opt/php@7.1/bin/pecl install xdebug-2.9.8
/usr/local/opt/php@7.2/bin/pecl install xdebug-3.1.6
/usr/local/opt/php@7.3/bin/pecl install xdebug-3.1.6
/usr/local/opt/php@7.4/bin/pecl install xdebug-3.1.6
/usr/local/opt/php@8.0/bin/pecl install xdebug
/usr/local/opt/php@8.1/bin/pecl install xdebug
/usr/local/opt/php@8.2/bin/pecl install xdebug

PECLでインストールしたextentionのインストール先はpearコマンドで分かります。

pear config-show | grep ext_dir
PHP extension directory        ext_dir          /opt/homebrew/lib/php/pecl/20200930

切り替え

利用するPHPを選択する方法はいくつかあります。ターミナルで選択する方法だと複数のPHP

ターミナルで選択

この方法はグローバルのパスを変えるのではなく、ターミナルの範囲内だけでphpのパスをPATH環境変数によって選択します。同時に複数バージョンのPHPの操作が可能です。

ターミナル > 環境設定 > プロファイル > コマンドを実行で目的のPHPのバイナリのパスをexportします。php -vも実行しておくと便利です。

  • Appleシリコン CPUの場合
export PATH="/opt/homebrew/opt/php@8.0/bin/:$PATH"; php -v
  • Intel CPUの場合
export PATH="/usr/local/opt/php@8.0/bin/php:$PATH"; php -v

image.png
テキストタブでタイトルをPHP7.4などと変えます。ウインドウで背景の色を変えるとさらに区別しやすいでしょう。

ターミナルの新規ウインドウでPHPを選んで利用します。

グローバルで切り替え

パスで指定されてていな時のPHPを切り替えます。

brew linkで切り替え

特別のツールを必要としない一番シンプルな方法です。brewで切り替えます。

brew link --overwrite --force shivammathur/php/php@8.1

/opt/homebrew/bin/phpで指定されるPHPが指定のバージョンのものになります。

sphpで切り替え

sphpスクリプトをインストールして切り替えます。この方法はbrew linkで切り替える方法に加えて、apacheのPHPバージョンも切り替えます。

curl -L https://raw.githubusercontent.com/rhukster/sphp.sh/main/sphp.sh > /opt/homebrew/bin/sphp
chmod +x /opt/homebrew/bin/sphp
sphp 7.2

ローカルのapacheで複数バージョンのPHPを利用するときは Apache Setup: Multiple PHP Versionsをご覧ください。

PHPStormで

⇧ ⌘ Aを押してChange PHP interpreterとタイプして選ぶこともできます。

PHPStormのcomposerで

PHP > Composer > Excutionで composer.pharを選ぶとPHPのバージョンが指定できるようになります。

image.png

PHPStormのターミナルで

現在、これといった決め手がありません。

export PATH="/opt/homebrew/opt/php@8.1/bin/:$PATH";を実行するとか、これを.php81.shとして保存しておいて実行するとか...

. ~/.php81.sh

ツールと同じように切り替えできて、他のシェルに影響を与えません。

必要ならMySQLクライアントなどのパスも含めてプロジェクト単位のスクリプトを用意します。

issueは上がっています。voteをして支持をしましょう。
https://youtrack.jetbrains.com/issue/WI-66898

composer.jsonで

スプリクトのphpを@phpにするとcomposerスクリプト実行時のPHPで実行します。

{
    "scripts": {
        "test": [
            "@php script.php",
            "phpunit"
        ]
    }
}
11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?