phpbrew

バージョン管理PHP開発環境CLIビルドツール拡張管理

GitHub概要

phpbrew/phpbrew

Brew & manage PHP versions in pure PHP at HOME

スター5,489
ウォッチ127
フォーク370
作成日:2011年9月27日
言語:Makefile
ライセンス:MIT License

トピックス

php-versionsphpbrew

スター履歴

phpbrew/phpbrew Star History
データ取得日時: 2025/7/20 03:05

言語バージョン管理ツール

phpbrew

概要

phpbrewは、PHPの複数バージョンをホームディレクトリにビルド・インストールして管理するツールです。純粋なPHPで書かれており、PHPのコンパイルオプションを「バリアント」として簡略化し、拡張機能の管理も統合的に行えます。開発環境で異なるPHPバージョンを必要とするプロジェクトを扱う開発者に最適です。

詳細

主な特徴

  • バリアントシステム: 複雑なconfigureオプションを簡潔に指定
  • 拡張機能管理: PECLと統合した拡張機能のインストール・管理
  • Apacheモジュール対応: mod_phpの複数バージョン管理
  • ホームディレクトリインストール: root権限不要
  • シェル統合: bash/zshでの自動バージョン切り替え
  • 自動機能検出: HomebrewやMacPortsのパス最適化

動作原理

phpbrewはPHPソースコードをダウンロードし、指定されたバリアントに基づいてコンパイル・インストールします。各バージョンは~/.phpbrew/php/以下に独立して保存され、シェルの初期化スクリプトによってPATHが動的に切り替わります。

バリアント種類

  • default: 一般的な開発に必要な基本セット
  • +mysql +pdo: データベース接続機能
  • +sqlite: SQLiteサポート
  • +debug: デバッグシンボル付きビルド
  • +fpm: FastCGI Process Manager
  • +opcache: OPcacheの有効化

メリット・デメリット

メリット

  • 完全な制御: コンパイルオプションを細かく指定可能
  • 拡張機能の柔軟性: 各PHPバージョンごとに異なる拡張セット
  • 最新版への対応: 新しいPHPバージョンも即座にビルド可能
  • 開発環境最適化: デバッグビルドや特殊な設定が容易
  • 複数SAPI対応: CLI、FPM、Apacheモジュールを同時管理
  • 環境分離: システムPHPに影響を与えない

デメリット

  • ビルド時間: ソースからのコンパイルに時間がかかる
  • 依存関係の複雑さ: 開発用ライブラリの事前インストールが必要
  • ディスク使用量: 各バージョンが完全なPHP環境を保持
  • 初期設定の手間: シェル設定やビルド環境の準備が必要
  • Windows非対応: Unix系OSのみサポート
  • トラブルシューティング: ビルドエラーの解決に知識が必要

参考ページ

書き方の例

インストール

# phpbrewのダウンロードとインストール
curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar
chmod +x phpbrew.phar
sudo mv phpbrew.phar /usr/local/bin/phpbrew

# 初期化
phpbrew init

# シェル設定(.bashrcまたは.zshrcに追加)
echo '[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc' >> ~/.bashrc
source ~/.bashrc

# macOSでの依存関係インストール
brew install automake autoconf curl pcre re2c mhash libtool icu4c gettext jpeg libxml2 mcrypt gmp libevent
brew link icu4c --force

# Ubuntuでの依存関係インストール
sudo apt-get update
sudo apt-get install -y php build-essential libxml2-dev libssl-dev libbz2-dev \
libcurl4-openssl-dev libjpeg-dev libpng-dev libmcrypt-dev libreadline-dev \
libtidy-dev libxslt-dev libzip-dev

PHPバージョンのインストール

# 利用可能なバージョンの確認
phpbrew known
phpbrew known --old  # 古いバージョンも表示

# 基本的なインストール
phpbrew install 8.3.0 +default
phpbrew install 8.2.13 +default +fpm

# データベース対応でインストール
phpbrew install 8.1.26 +default +mysql +pdo +pgsql

# 開発用フルセット
phpbrew install 8.3.0 +default +mysql +pdo +pgsql +sqlite \
  +curl +gd +intl +mbstring +opcache +openssl +xml +zip +fpm +debug

# スレッドセーフ版(ZTS)
phpbrew install 8.2.13 +default +zts

# 特定のconfigureオプション指定
phpbrew install 8.3.0 +default -- \
  --with-config-file-path=/etc/php/8.3 \
  --with-config-file-scan-dir=/etc/php/8.3/conf.d

バージョンの切り替え

# インストール済みバージョンの一覧
phpbrew list

# 一時的な切り替え(現在のシェルのみ)
phpbrew use 8.3.0
phpbrew use php-8.2.13

# 永続的な切り替え(デフォルト設定)
phpbrew switch 8.3.0

# システムPHPに戻す
phpbrew off

# 現在の状態確認
phpbrew info
php -v

拡張機能の管理

# 拡張機能の検索
phpbrew ext search redis
phpbrew ext search xdebug

# 拡張機能のインストール
phpbrew ext install redis
phpbrew ext install xdebug 3.3.0
phpbrew ext install imagick -- --with-imagick=/usr/local

# 安定版の自動選択
phpbrew ext install redis stable
phpbrew ext install mongodb latest

# インストール済み拡張機能の確認
phpbrew ext list
phpbrew ext show

# 拡張機能の有効化/無効化
phpbrew ext enable redis
phpbrew ext disable xdebug

# 拡張機能の削除
phpbrew ext uninstall redis

PHP-FPMの管理

# FPM付きでPHPをインストール
phpbrew install 8.3.0 +default +fpm

# FPMの起動
phpbrew fpm start

# FPMの停止
phpbrew fpm stop

# FPMの再起動
phpbrew fpm restart

# FPM設定ファイルの場所
phpbrew config fpm

# カスタムポートでFPM起動
phpbrew fpm start --port 9001

Apacheモジュールの管理

# Apache対応でインストール
phpbrew install 8.2.13 +default +apxs2=/usr/bin/apxs2

# インストール後のモジュール確認
ls ~/.phpbrew/php/php-8.2.13/modules/

# Apacheへの設定例
sudo ln -s ~/.phpbrew/php/php-8.2.13/modules/libphp.so /usr/lib/apache2/modules/libphp8.2.so

設定とカスタマイズ

# php.iniの編集
phpbrew config

# 特定バージョンのphp.ini編集
phpbrew config php-8.3.0

# バリアント一覧の確認
phpbrew variants

# ビルドログの確認
phpbrew build-dir

# キャッシュのクリア
phpbrew purge

プロジェクトでの使用例

# プロジェクトディレクトリで
cd /path/to/my-project

# .phpbrewrcファイルの作成
echo "8.2.13" > .phpbrewrc

# 自動的にバージョンが切り替わる
cd ..
cd my-project  # 8.2.13に自動切り替え

# Composerとの併用
phpbrew use 8.2.13
composer install

トラブルシューティング

# ビルドエラー時のログ確認
phpbrew build-dir
tail -f ~/.phpbrew/build/php-8.3.0/build.log

# OpenSSLエラーの対処(macOS)
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"
phpbrew install 8.3.0 +default +openssl

# メモリ不足エラーの対処
export PHPBREW_MAKE_JOBS=1  # 並列ビルドを無効化
phpbrew install 8.3.0 +default

# ビルドのやり直し
phpbrew clean php-8.3.0
phpbrew install 8.3.0 +default