ServBay PHPバージョン管理:コマンドライン&ウェブサイト環境設定ガイド
ServBayは、macOSとWindowsで利用できる強力なローカルWeb開発環境ツールです。複数のプログラミング言語やデータベースをサポートし、各プロジェクトで異なるPHPバージョンを柔軟に管理できます。本記事では、ServBayにおけるPHPバージョン管理の仕組みと、コマンドライン・ウェブサイトごとに環境を切り替える方法を詳しく解説します。ServBayのPHPバージョン管理をマスターすることで、開発効率が大幅に向上し、プロジェクト環境の分離と安定性を確保できます。
1. コマンドライン環境 : .servbay.config
によるプロジェクトごとのPHPバージョン管理
プロジェクトルートディレクトリに .servbay.config
設定ファイルを配置することで、プロジェクトごとに個別のPHPバージョンを指定できます。ServBayは、現在のターミナルのカレントディレクトリを検出し、自動的に対応したPHP環境をロード。プロジェクト間のバージョン分離を実現し、グローバル環境の競合を防ぎます。
1. .servbay.config
の役割と仕組み
- プロジェクト単位でバージョン管理: ServBayでは、PHP 5.6から最新の安定版・開発版まで複数バージョンの同時インストール・稼働が可能です。
.servbay.config
を利用することで、各プロジェクトに必要なPHPバージョンを正確に指定できます。 - 非侵襲的な切り替え: ターミナルで
cd
コマンドを使って.servbay.config
ファイルが存在するプロジェクトディレクトリに移動すると、ServBayが自動的にこのファイルを検知し、一時的に現在のターミナルセッションの環境変数(主にPATH
)を変更します。これによりphp
やcomposer
などのコマンドが指定されたPHPバージョンの実行ファイルに切り替わります。ディレクトリを抜けると元のグローバル設定に戻り、システム環境への影響はありません。
2. 設定方法
プロジェクトのルートディレクトリに .servbay.config
ファイルを作成し、下記内容でPHPバージョンを指定してください。
bash
# このプロジェクトで使用するPHPバージョン(例:PHP 8.3を利用)
PHP_VERSION=8.3
# Node.jsバージョンの指定も可能(例:Node.js 20を利用する場合)
# NODE_VERSION=20
1
2
3
4
5
2
3
4
5
PHP_VERSION
の値は、ServBayでインストール・有効化済みのPHPバージョン識別子(例:7.4
,8.1
,8.3
,8.5
など)を指定してください。指定したバージョンがServBayで利用可能か必ず確認しましょう。NODE_VERSION
も同様にプロジェクトで必要なNode.jsバージョンを指定できます。
適用の確認:
.servbay.config
ファイルが存在するプロジェクトディレクトリでターミナルを開き、下記コマンドで検証しましょう。
bash
$ pwd # 現在のディレクトリがプロジェクトルートか確認
$ php -v # 出力されたPHPバージョンが指定通りか確認(例:PHP 8.3.x)
$ composer install # 依存関係の解決やインストールが、指定PHPバージョンで動作するか確認
1
2
3
2
3
もし .servbay.config
変更後にバージョン切替が反映されない場合は、ターミナルウィンドウを閉じて再度開くか、cd .
コマンドでServBayに設定の再読込を促してください。
3. 利用上の注意と応用テクニック
- バージョンの互換性: プロジェクトコマンド実行時に"Class not found"や"Call to undefined function"等のエラーが出る場合、まず
composer.json
で要求されるPHPバージョン範囲を確認し、指定PHPバージョンとの互換性をチェックしましょう。一部の旧プロジェクトは、新しいPHPバージョンで削除された機能や拡張(例:PHP 7.2でmcrypt
拡張が削除)に依存する場合があります。 - グローバルデフォルト値: 現在のディレクトリや上位ディレクトリに
.servbay.config
が無い場合、ServBayでGUI「設定」で指定したグローバルデフォルトPHPバージョンが利用されます。 - マルチサービス活用:
.servbay.config
ではPHPだけでなく、Node.jsバージョンも(NODE_VERSION
で)指定できます。PHPバックエンド+Node.jsフロントエンド構成のプロジェクト(WebpackやVite等利用時)にも便利です。
4. 動作例
下記は、異なるプロジェクトディレクトリごとに、.servbay.config
でPHPバージョン自動切替を行うデモ例です。
画像説明:ServBayでは、
.servbay.config
ファイルが異なるディレクトリへ移動し php -v
を実行すると、そのファイルで指定したPHPバージョンにターミナル環境が自動切り替えされます。
2. ウェブサイト環境:ServBay GUIによるPHPバージョン管理
ServBayのGUIでは、各ウェブサイトごとに独立したPHPバージョンを直感的に設定できます。ウェブサイト(Web環境)のPHPバージョンは、コマンドライン環境とは独立して管理されますので、必要に応じて柔軟に選択可能です。
1. 設定フロー
- ServBay GUIを開く: ServBayアプリを起動します。
- ウェブサイト管理にアクセス: メイン画面左ナビゲーションの Websites(ウェブサイト) タブをクリック。
- ウェブサイトの追加・編集:
- 左下の + ボタンで新しいウェブサイト設定を追加。
- 既存サイト設定の編集も可能です。
- ウェブサイト属性の設定:
- Root Directory(ルートディレクトリ): サイトファイルがあるフォルダを指定します。推奨はServBayデフォルトの
/Applications/ServBay/www/
配下のサブディレクトリ(例:/Applications/ServBay/www/your-website-name/public
:Laravel/Symfonyの場合)。 - Domain(ドメイン): ローカル開発用のサイトアクセス用ドメイン(例:
your-website-name.servbay.demo
)を設定します。ServBayはカスタムドメインのローカルDNS解決&HTTPS証明書(ServBay User CA/Public CA)を自動設定し、開発・テストを快適にします。 - PHP Version(PHPバージョン): 設定画面のプルダウンメニューから利用したいPHPバージョンを選択。ServBayでインストール・有効化済みバージョン(例:7.4、8.1、8.3、8.5等)が一覧されます。
- Root Directory(ルートディレクトリ): サイトファイルがあるフォルダを指定します。推奨はServBayデフォルトの
- 設定保存: 内容に問題なければ保存ボタンをクリック。ServBayが自動で設定反映し、必要ならWebサーバやPHP-FPMプロセスの再起動・再読込を行う場合があります。
2. 技術的詳細とメリット
- 環境分離設計: ServBayでは、各ウェブサイトごとに異なるPHPバージョンが、独立したPHP-FPMプロセスプールで起動されます。これによりウェブサイトごとのPHP環境が完全に分離され、一方のサイトでの障害やメモリリークの影響を他サイトへ波及させません。
- パフォーマンス最適化: ServBayのPHPパッケージはARM64(Apple Silicon)・X86_64両アーキテクチャで最適化済み。異なるハードウェアでも安定した高パフォーマンスが得られます。
- 障害調査ポイント:
- PHPエラーログは
/Applications/ServBay/var/log/php/php_error.log
に記録。 - PHP-FPMプロセス状態は、ServBayCLIツール
servbayctl
(例:servbayctl status php 8.3
)で確認できます。
- PHPエラーログは
3. Webサーバ・データベース連携
ServBayは、プロジェクト要件に合わせてWebサーバやデータベースも柔軟に選択可能です。
- Webサーバ: ServBay 1.7.0以降では、ウェブサイトごとにApache・Nginx・Caddyを簡単に切り替えて利用できます。各サーバはServBay管理のPHP-FPMとシームレスに統合。
- データベース: ServBayはMySQL、MariaDB、PostgreSQL、MongoDB、Redis等複数のデータベースパッケージを管理可能。サイト設定やプロジェクトコードから、ServBay上で稼働する任意のデータベースインスタンスに接続できます。例えばLaravelプロジェクトではMariaDB 11.xなど特定バージョンも選択可能です。
3. 複数環境の協調運用とベストプラクティス
コマンドライン環境・ウェブサイト環境におけるPHPバージョン管理の独立性や活用方法を理解することで、開発シーンに応じて最適な選択ができます。
シーン | コマンドライン(.servbay.config )設定 | ウェブサイトGUI設定 | メモ |
---|---|---|---|
レガシーシステム保守 | プロジェクトルートに PHP_VERSION=5.6 設定 | サイト設定でPHP 5.6選択 | 旧プロジェクト向けPHPバージョン・拡張がServBayで利用可能か必ず確認。 |
新規プロジェクト開発(例: Laravel 11) | PHP_VERSION=8.3 (またはそれ以上)/ NODE_VERSION=20 も指定 | 新規サイト追加、publicディレクトリをルートに設定、PHP 8.3+選択、開発用ドメイン・HTTPS有効 | CLIツール(Composer, Artisan, Node構築)・Web環境PHPバージョンの整合性も推奨。 |
最新PHPバージョンでの検証 | テストプロジェクトで PHP_VERSION=8.5 設定 | テストサイトでPHP 8.5選択 | 新バージョンPHPのプロジェクト対応テスト用途。 |
Composerコマンド利用 | カレントor上位ディレクトリ .servbay.config で正しいPHPを指定 | N/A(Composerは主にCLIで利用) | Composerは有効化されているPHPバージョンで動作。 |
ご注意
- CLI/WEB間の違い: 同じバージョンのPHPでも、コマンドライン(CLI)・Web(PHP-FPM)環境間でデフォルト設定や読み込まれる拡張に違いがある場合があります(例:CLIでは
opcache
は未有効、Web(PHP-FPM)では標準有効など)。挙動の差がある場合は、各バージョンごとのphp.ini
や有効化済み拡張を個別にチェックしてください。 - ServBay Runtimeの更新: ServBay本体およびRuntimeは常に最新に保ちましょう。ServBay開発チームはPHP新バージョン・セキュリティパッチ等を随時提供します。ServBayをアップデートするとRuntimeも自動更新され、最新の機能・安定性が得られます。
よくある質問(FAQ)
Q: コマンドライン と ウェブサイト環境のPHPバージョンが違う場合どうなりますか?
A: コマンドライン(.servbay.config
で制御)とウェブサイト(ServBay GUIで制御)のPHPバージョン設定は完全に独立しています。.servbay.config
は、ターミナルセッションの php
コマンドがどのバージョンを使うか決めるだけです。ウェブサイト設定は、Webサーバ(Apache/Nginx/Caddy)からPHP-FPM経由でWebリクエストを処理するPHPバージョンを決めます。両者が直接競合することはありません。プロジェクトによっては、CLIとWebで別々のバージョンを設定することも可能ですが(例えばComposer、ArtisanはCLIで8.3、Webは7.4等)、開発・本番環境の統一性維持のため同一バージョンに揃えることを推奨します。
まとめ
ServBayは、.servbay.config
ファイルと直感的なGUIで、強力かつ柔軟なPHPバージョン管理機能を開発者に提供します。旧バージョンPHPが必要なレガシープロジェクトの保守から、最新PHPを使ったアプリ開発まで、ServBayなら簡単に対応可能。これらの機能を上手く利用する事で、ローカル開発環境と本番環境の差異を減らし、開発効率とプロジェクト安定性の向上が期待できます。