4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPComplete: 複数のPHPバージョンを一括インストール

Last updated at Posted at 2024-06-21
brewworks logo

以前紹介した、Macで複数のバージョンのPHPを同時に使うのニューバージョンです。

複数のPHPバージョンを簡単に一度にインストールできる便利なHomebrewフォーミュラ「PHPComplete」を紹介します。

PHPCompleteとは?

PHPCompleteは、複数のPHPバージョンを一度にインストールできるHomebrewフォーミュラです。XDebugもインストールします。

他との違い

phpenvと違い、ディレクトリ単位で切り替える機能はありません。また、phpbrewのようなインストールツールでもありません。

実体は単なるHomebrewフォーミュラです。shivammathur/phpで用意されている複数のPHPを一度にインストールします。グローバルなユーティリティなどなくクリーンです。

主な特徴

PHPだけでなくXdebugデバッカーも同時に複数バージョンのPHPにインストールされます。

  1. 複数のPHPバージョン: PHP 5.6から8.3まで一度にインストールされます。
  2. XDebugの自動インストール: 各PHPバージョンに適したXDebugが自動的にインストールされます。
  3. 柔軟なカスタマイズ: 必要なPHPバージョンやエクステンションを簡単にコメントアウトできます。例えば上記のPECLをPHP 5.6からでもインストールできます。

使い方

  1. タップしてフォーミュラをインストール:

    brew tap koriym/malt
    brew install phpcomplete
    
  2. インストール完了後、各PHPバージョンとエクステンションが使用可能になります。

カスタマイズと再インストール

PHPCompleteの素晴らしい点は、必要なPHPバージョンやPECLパッケージを柔軟に選択できることです。

  1. フォーミュラを編集:

    brew edit phpcomplete
    
  2. 必要なPHPバージョンやPECLパッケージを選択(または選択解除)します。

  3. 変更を反映するために再インストール:

    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を"コンプリート"してください!😆

4
2
1

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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?