ServBay PHPバージョン管理:コマンドライン&ウェブサイト環境設定ガイド
ServBayは、macOS向けに設計された強力なローカルWeb開発環境ツールで、複数のプログラミング言語とデータベースをサポートしています。本記事では、ServBayでプロジェクトごとに柔軟にPHPバージョンを管理する方法について、コマンドラインでのスクリプト実行や特定ウェブサイト向けのサービス提供の両面から詳しく解説します。ServBayのPHPバージョン管理機構をマスターすることで、開発効率が大幅に向上し、プロジェクト環境の分離と安定性を確保できます。
1. コマンドライン環境:.servbay.config
でプロジェクト単位のPHPバージョンを管理
プロジェクトのルートディレクトリに.servbay.config
ファイルを作成することで、各プロジェクトに独立したコマンドラインPHPバージョンを指定できます。ServBayは、現在のターミナルの場所に応じて自動的に該当するPHP環境をロードし、プロジェクト間のバージョン分離を実現、グローバル設定との競合を回避します。
1.1 .servbay.config
の役割と原理
- プロジェクト単位のバージョン管理: ServBayはPHP 5.6から最新の安定版・開発版まで、複数のPHPバージョンを同時にインストール・稼働できます。
.servbay.config
を使えば、各プロジェクトごとに必要なPHPバージョンを細かく指定できます。 - 非侵入型スイッチ: ターミナルで
cd
コマンドにより.servbay.config
が存在するディレクトリに移動すると、ServBayが自動検出し、一時的に現在のターミナルセッションの環境変数(主にPATH
)を変更。これによりphp
やcomposer
コマンドが指定バージョンのPHP実行ファイルを指すようになります。ディレクトリから移動すると環境はServBayのグローバルデフォルトに戻るため、システムへの悪影響はありません。
1.2 設定方法
プロジェクトルートディレクトリに.servbay.config
というファイルを新規作成し、以下を記述してPHPバージョンを指定します:
# プロジェクトで使用するPHPバージョンを指定(例:PHP 8.3を使用)
PHP_VERSION=8.3
# Node.jsのバージョン指定も必要な場合は記述(例:Node.js 20を使用)
# NODE_VERSION=20
2
3
4
5
PHP_VERSION
の値はServBayでインストール済みのバージョン識別子(例:7.4
,8.1
,8.3
,8.5
など)を指定します。記載したバージョンが必ずServBayで有効化・導入済みであることをご確認ください。NODE_VERSION
も同様の書式で、Node.jsバージョンを指定した際に有効です。
設定の反映確認:
.servbay.config
ファイルがあるディレクトリでターミナルを開いて、以下のコマンドで設定が有効化されているか確認しましょう。
$ pwd # カレントディレクトリがプロジェクトルートか確認
$ php -v # 指定したPHPバージョン(例:PHP 8.3.x)が出力されるかチェック
$ composer install # 依存解決・インストールも現在のPHPバージョンで処理されます
2
3
.servbay.config
修正後にバージョンが切り替わらない場合は、ターミナルを一度閉じて再度開くか、cd .
コマンドを実行してServBayの設定の再読み込みを試してください。
1.3 注意点・上級活用法
- バージョン互換性: "Class not found"や"Call to undefined function"などのエラーが出た場合、まずプロジェクト依存(例:
composer.json
)が要求するPHPバージョンの範囲と、実際に指定したバージョンが整合しているかを確認しましょう。古いプロジェクトは新バージョンで削除された拡張や機能(例:PHP 7.2のmcrypt
拡張など)に依存している場合があります。 - グローバルデフォルト値: カレントディレクトリまたはその親ディレクトリに
.servbay.config
が無い場合、ServBayのGUI「設定」で指定したグローバルデフォルトPHPバージョンが利用されます。 - マルチサービス管理:
.servbay.config
はPHPバージョンだけでなく、NODE_VERSION
によるNode.jsバージョン指定にも対応。バックエンドにPHP、フロントにNode.js(WebpackやViteなど)を使うプロジェクトで重宝します。
1.4 運用例
以下は、異なるプロジェクトディレクトリ毎に.servbay.config
でPHPバージョンを自動切り替えするデモです:
画像説明:ServBayでは、異なる
.servbay.config
を持つディレクトリでphp -v
コマンドを実行すると、指定のPHPバージョンに自動切り替えされていることが確認できます。
2. ウェブサイト環境:ServBay GUIでPHPバージョンを個別設定
ServBayのグラフィカルユーザーインターフェイスを使えば、各ウェブサイトごとに別々のPHPバージョンを直感的に設定できます。ウェブサイト環境のPHPバージョンはコマンドラインとは独立しており、サイトごとの要件に合わせて柔軟に選べます。
2.1 設定手順
- ServBayアプリを起動: ServBayアプリケーションを起動します。
- ウェブサイト管理画面へ: メイン画面左側ナビゲーションの Websites(ウェブサイト) タブをクリック。
- ウェブサイトの追加・編集:
- 画面左下の + ボタンで新しいウェブサイト設定を追加できます。
- 既存ウェブサイトの設定を選択して編集も可能。
- ウェブサイト属性の設定:
- Root Directory(サイトのルートディレクトリ): ウェブファイルが所在するディレクトリを指定。推奨は
/Applications/ServBay/www/
配下のサブディレクトリ(例:/Applications/ServBay/www/your-website-name/public
/LaravelやSymfonyプロジェクトの場合)。 - Domain(ドメイン名): ローカル開発用ドメイン例:
your-website-name.servbay.demo
。ServBayはこれらのカスタムドメインにローカルDNSとHTTPS証明書(ServBay User CAまたはServBay Public CAによる)を自動付与、開発・テストが大変便利です。 - PHP Version(PHPバージョン): プルダウンリストから使用したいPHPバージョンを選択可能。インストール&有効化済みの全PHPバージョン(例:7.4, 8.1, 8.3, 8.5など)が表示されます。
- Root Directory(サイトのルートディレクトリ): ウェブファイルが所在するディレクトリを指定。推奨は
- 設定の保存: 設定が完了したら保存ボタンをクリック。ServBayが自動的に変更を反映し、必要に応じてWebサーバーやPHP-FPMプロセスの再読み込み/再起動を行います。
2.2 技術的特徴とメリット
- サービス分離: 各ウェブサイトで設定したPHPバージョンは、通常独立したPHP-FPMプロセスプールとして起動されます。これにより異なるサイト間で完全なPHP環境分離が実現し、エラーやメモリリークが他サイトに波及しません。
- パフォーマンス最適化: ServBayの各種ソフトウェア(PHP各バージョン含む)はARM64(Apple Silicon)・X86_64両アーキテクチャに高度最適化済みです。どちらのハードでも高いパフォーマンスを発揮します。
- トラブルシューティング:
- PHPエラーログ確認:ウェブサイト実行中のPHPエラーは
/Applications/ServBay/var/log/php/php_error.log
に記録されます。 - PHP-FPMプロセス状態確認:ServBayのコマンドラインツール
servbayctl
で特定PHPバージョンの稼働状況がチェック可能(例:servbayctl status php 8.3
)。
- PHPエラーログ確認:ウェブサイト実行中のPHPエラーは
2.3 Webサーバー・DB連携
ServBayは柔軟な構成が可能で、プロジェクトごとにWebサーバー種類やデータベースも手軽に切り替えられます:
- Webサーバー: ServBay 1.7.0以降は、Apache・Nginx・Caddyをサポートし、サイト設定で切替可能。いずれもPHP-FPMとシームレス連携します。
- データベース: MySQL・MariaDB・PostgreSQL・MongoDB・Redisなど多種多様なDBパッケージの複数バージョン管理に対応。ウェブサイト設定またはアプリケーションコードから、ServBayで稼働中の指定DBインスタンスに接続できます。Laravel11.xに適したMariaDB 11.x利用など、プロジェクト特性に応じて最適なDB・バージョンを選択できます。
3. 複数環境協調とベストプラクティス
コマンドライン環境とウェブサイト環境のPHPバージョンを独立して管理する意義や設定方法を正しく理解しておくことで、各開発シーンにベストな判断ができます:
シナリオ | コマンドライン環境(.servbay.config ) | ウェブサイト環境(ServBay GUI) | 備考 |
---|---|---|---|
レガシーシステム保守 | プロジェクトルートにPHP_VERSION=5.6 記述 | サイト設定でPHP 5.6を選択 | 古いPHPや拡張モジュールが必要な場合、ServBayに必要バージョンを事前導入 |
新規開発 (例:Laravel 11) | PHP_VERSION=8.3 以上、場合によりNODE_VERSION=20 も指定 | 新規サイト追加、公開ディレクトリをpublic にしPHP 8.3+・開発用ドメインとHTTPS有効化 | コマンドライン(Composer・Artisan・Node構築)とWeb環境のPHPバージョンを一致推奨 |
将来PHPバージョンの検証 | テスト用プロジェクトルートにPHP_VERSION=8.5 指定 | テスト用サイト追加、PHP 8.5選択 | 新バージョンへの対応可否事前検証に便利 |
Composerコマンド実行 | カレントor上位に正しい.servbay.config が必要 | N/A(Composerはコマンドライン利用) | Composerは現在のターミナル環境のPHPバージョンを使用 |
注意事項
- CLIとWeb環境の違い: 同じPHPバージョン番号でも、コマンドライン(CLI)とWeb(PHP-FPM)環境では、デフォルト設定や有効拡張が異なる場合があります。例:
opcache
拡張はPHP-FPMでデフォルト有効、CLIで無効なことが多いです。挙動差異に悩んだら、それぞれのphp.ini
(ServBayではPHPバージョン毎に別ファイル)と有効拡張を確認してください。 - ServBayランタイムのアップデート: ServBay本体・ランタイムは最新を維持しましょう。ServBayチームはPHPの新バージョン・セキュリティ修正含む各種パッケージを随時アップデートしています。ServBayのアップデートはランタイム含め自動で機能・安定性も向上します。
よくある質問(FAQ)
Q: コマンドラインとウェブサイトでPHPバージョンが食い違っても大丈夫ですか?
A: コマンドライン(.servbay.config
による制御)とウェブサイト(ServBay GUI設定による)は完全独立です。.servbay.config
は現在のターミナルセッションのphp
コマンドにのみ影響、ウェブサイトの設定はWebサーバー(Apache/Nginx/Caddy)がPHP-FPMを通じて使うPHPを決定します。直接の競合はありません。ただし、開発や本番環境の一貫性を保つため、原則コマンドラインとWeb両環境で同じPHPバージョンを使用することを推奨します。
まとめ
ServBayは.servbay.config
ファイルと直感的なGUIを通じて、柔軟かつ強力なPHPバージョン管理機能を提供します。旧バージョンPHP依存のレガシープロジェクトから、最新PHPバージョン対応の新規アプリ開発まで、あらゆるシーンでServBayが活躍します。これら機能を活用すれば、ローカル開発と本番環境の一致度が高まり、開発効率やプロジェクトの安定性も大きく向上します。