以前紹介した、Macで複数のバージョンのPHPを同時に使うのニューバージョンです。
複数のPHPバージョンを簡単に一度にインストールできる便利なHomebrewフォーミュラ「PHPComplete」を紹介します。
PHPCompleteとは?
PHPCompleteは、複数のPHPバージョンを一度にインストールできるHomebrewフォーミュラです。XDebugもインストールします。
他との違い
phpenvと違い、ディレクトリ単位で切り替える機能はありません。また、phpbrewのようなインストールツールでもありません。
実体は単なるHomebrewフォーミュラです。shivammathur/phpで用意されている複数のPHPを一度にインストールします。グローバルなユーティリティなどなくクリーンです。
主な特徴
PHPだけでなくXdebugデバッカーも同時に複数バージョンのPHPにインストールされます。
- 複数のPHPバージョン: PHP 5.6から8.3まで一度にインストールされます。
- XDebugの自動インストール: 各PHPバージョンに適したXDebugが自動的にインストールされます。
- 柔軟なカスタマイズ: 必要なPHPバージョンやエクステンションを簡単にコメントアウトできます。例えば上記のPECLをPHP 5.6からでもインストールできます。
使い方
-
タップしてフォーミュラをインストール:
brew tap koriym/malt brew install phpcomplete -
インストール完了後、各PHPバージョンとエクステンションが使用可能になります。
カスタマイズと再インストール
PHPCompleteの素晴らしい点は、必要なPHPバージョンやPECLパッケージを柔軟に選択できることです。
-
フォーミュラを編集:
brew edit phpcomplete -
必要なPHPバージョンやPECLパッケージを選択(または選択解除)します。
-
変更を反映するために再インストール:
brew reinstall phpcomplete
このように開発環境をコントロールできます。
アンインストール
アンインストールを行うと、PHPCompleteでインストールされたPHPバージョンがすべてアンインストールされます。
brew uninstall phpcomplete
~/.zshrcの設定
切り替えユーティリティを使わず、PATH環境変数の値を変えるだけでPHPを切り替えます。
# Switch PHP version for current session (changes PATH)
alias sphp56='export PATH="/opt/homebrew/opt/php@5.6/bin:$PATH" && echo "Switched to PHP 5.6"'
alias sphp70='export PATH="/opt/homebrew/opt/php@7.0/bin:$PATH" && echo "Switched to PHP 7.0"'
alias sphp71='export PATH="/opt/homebrew/opt/php@7.1/bin:$PATH" && echo "Switched to PHP 7.1"'
alias sphp72='export PATH="/opt/homebrew/opt/php@7.2/bin:$PATH" && echo "Switched to PHP 7.2"'
alias sphp73='export PATH="/opt/homebrew/opt/php@7.3/bin:$PATH" && echo "Switched to PHP 7.3"'
alias sphp74='export PATH="/opt/homebrew/opt/php@7.4/bin:$PATH" && echo "Switched to PHP 7.4"'
alias sphp80='export PATH="/opt/homebrew/opt/php@8.0/bin:$PATH" && echo "Switched to PHP 8.0"'
alias sphp81='export PATH="/opt/homebrew/opt/php@8.1/bin:$PATH" && echo "Switched to PHP 8.1"'
alias sphp82='export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH" && echo "Switched to PHP 8.2"'
alias sphp83='export PATH="/opt/homebrew/opt/php@8.3/bin:$PATH" && echo "Switched to PHP 8.3"'
alias sphp84='export PATH="/opt/homebrew/opt/php@8.4/bin:$PATH" && echo "Switched to PHP 8.4"'
alias sphp85='export PATH="/opt/homebrew/opt/php@8.5/bin:$PATH" && echo "Switched to PHP 8.5"'
# Run specific PHP version directly (without changing PATH)
alias php56='/opt/homebrew/opt/php@5.6/bin/php'
alias php70='/opt/homebrew/opt/php@7.0/bin/php'
alias php71='/opt/homebrew/opt/php@7.1/bin/php'
alias php72='/opt/homebrew/opt/php@7.2/bin/php'
alias php73='/opt/homebrew/opt/php@7.3/bin/php'
alias php74='/opt/homebrew/opt/php@7.4/bin/php'
alias php80='/opt/homebrew/opt/php@8.0/bin/php'
alias php81='/opt/homebrew/opt/php@8.1/bin/php'
alias php82='/opt/homebrew/opt/php@8.2/bin/php'
alias php83='/opt/homebrew/opt/php@8.3/bin/php'
alias php84='/opt/homebrew/opt/php@8.4/bin/php'
alias php85='/opt/homebrew/opt/php@8.5/bin/php'
PHPバージョンの切り替え
sphpXXエイリアスを使うと、現在のセッションで使用するPHPバージョンを切り替えられます。
sphp81 # Switch to PHP 8.1
sphp74 # Switch to PHP 7.4
sphp84を実行すると、phpコマンドがバージョン8.4を指すようになります。
直接実行
phpXXエイリアスを使うと、PATHを変更せずに特定バージョンのPHPを直接実行できます。
php81 # Run PHP 8.1
php74 # Run PHP 7.4
バージョンを指定してPHPを実行:
% php82 -v
Cannot load Xdebug - it was already loaded
PHP 8.2.29 (cli) (built: Jul 1 2025 16:29:21) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.29, Copyright (c) Zend Technologies
with Xdebug v3.3.2, Copyright (c) 2002-2024, by Derick Rethans
with Zend OPcache v8.2.29, Copyright (c), by Zend Technologies
バージョンを指定してPHPUnitなどのツールを実行:
php84 ./vendor/bin/phpunit
特徴
- シンプルで直感的: 簡単なコマンドでPHPのバージョンを素早く切り替えたり、実行したりできます。
- 追加ツール不要: シェルの機能のみを使用するため、追加のソフトウェアは必要ありません。
- brew updateで壊れない: Homebrewのアップデートで環境が壊れる心配がありません。
他にはターミナルのスクリプトを設定して、ウィンドウ単位で指定する方法もあります。前述の以下の記事の「ターミナルで選択」をご覧ください。
Webサーバーでの使用
この方法はCLI(コマンドライン)でのPHP切り替えを想定していますが、Webサーバーも以下のように対応可能です。
-
Apache + mod_php: 設定ファイル(httpd.conf等)で以下のようにモジュールのパスを指定し、Apacheを再起動してください。
LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so -
Apache/Nginx + PHP-FPM: VirtualHostごとに異なるPHP-FPMソケットを指定することで、バージョンを使い分けられます。
# ソケットのパス /opt/homebrew/opt/php@8.1/var/run/php-fpm.sock # PHP-FPMの起動 brew services start php@8.1 -
ビルトインサーバー:
php84 -S localhost:8080のようにバージョンを指定して起動できます。
より本格的な開発環境には
複数のサービス(PHP-FPM、MySQL、Redis、Nginxなど)をまとめて管理したい場合は、Maltもおすすめです。JSONファイルで開発環境全体を定義でき、Homebrewベースでネイティブパフォーマンスを実現します。
リソース使用量について
PHPCompleteを使用する際、リソース使用量について心配する必要はあまりありません:
- 各PHPバージョンは約80-100MBのディスク容量を使用します。
- インストールしたが使用していないPHPバージョンは、ディスク容量を占有するだけで、メモリやCPUには影響しません。
- そのため、使用頻度の低いバージョンをインストールしていても、システムパフォーマンスへの影響は最小限です。
あまり心配しないで、使わないバージョンがインストールされていてもまあいいのではないでしょうか。PHPコレクションとしてcompleteしましょう😃
まとめ
PHPCompleteは、複数のPHPバージョンを扱う開発者にとって便利なツールです。複数のPHP環境を1コマンドでXdebug付きでインストールでき(ここ重要)、構築の手間を大幅に削減します。異なるPHPバージョン間でのテストや開発が容易になり、カスタマイズも簡単です。リソース使用量も気にする必要がなく、余計なツールもインストールされません。
このフォーミュラでPHPを"コンプリート"してください!😆