ServBay付属のComposerでPHPプロジェクトを管理する方法
強力なローカルWeb開発環境として、ServBayはComposerをプリインストールしており、PHPプロジェクトの依存管理を大幅に簡素化します。Composerは現代PHP開発に欠かせない依存管理ツールで、開発者がサードパーティライブラリを容易に統合・管理し、複雑な依存関係を自動で処理し、便利なオートローディング機能も提供します。ServBayを利用すれば、追加のインストールや設定なしでComposerをすぐに活用でき、PHP開発ワークフローを加速できます。
Composerとは
Composerは、PHPプロジェクトの依存パッケージを管理するためのツールです。開発者はプロジェクトで必要な外部ライブラリ(パッケージ)を宣言し、それらのインストールやバージョンの更新を自動化できます。PHPライブラリだけでなく、フレームワークやコンポーネント、プラグインといった多様なパッケージの管理にも対応しています。
主な特徴
- 依存関係の管理:Composerはプロジェクトの依存関係を自動で解析し、すべての依存ライブラリのバージョン互換性を確保、不整合や競合も解決します。
- オートローディング:統一された自動ローダーファイルを生成することで、Composerでインストールしたクラスファイルを手動で
include
やrequire
せずに使えるようになります。 - バージョンコントロール:
composer.json
ファイルで依存ライブラリのバージョン制約を指定でき、Composerはその制約にもとづくバージョンを取得、composer.lock
で正確なバージョンをロック管理し、チームや異なる環境でも同じ依存を利用できます。 - パッケージ管理:Packagistという公式中央リポジトリから主要なPHPライブラリを簡単に検索・導入できます。
- 活発なコミュニティ:Composerは巨大で活発な開発者コミュニティと充実したドキュメントリソースを備えています。
ServBayに統合されたComposer
ServBayは複数バージョンのPHPをサポートし、インストール時にComposerも自動で導入されます。つまり、ユーザー自身でComposerをダウンロード/設定する必要はありません。ServBayはシステム環境でComposerが使える状態を担保し、通常はServBayで有効化しているPHPバージョンと連動して、プロジェクトターミナルからcomposer
またはcomposer-2.2
コマンドで直接利用できます。
注意
Composerには、最新版のComposer 2.8.x
と、旧PHPバージョン互換のComposer 2.2.x LTS
の2種類があります。Composer 2.8.x
はPHP 7.2+
用、Composer 2.2.x LTS
はPHP 5.3 - PHP 7.1
用です。
ServBayのデフォルトはComposer 2.8.x
(PHP 7.2+
推奨)です。
PHP 5.3 - PHP 7.1
のプロジェクトでComposerが必要な場合は、「ソフトウェアパッケージ」からComposer 2.2.x LTS
をインストールし、インストール後はcomposer-2.2
コマンドで実行してください。2つのバージョンは互いに干渉しません。
Composerでプロジェクト依存を管理する
Composerは、プロジェクトルート直下にあるcomposer.json
ファイルで依存ライブラリ管理を行います。以下にcomposer.json
作成から活用までの基本手順を説明します。
1. composer.json
ファイルの作成
PHPプロジェクトのルートディレクトリ(たとえば/Applications/ServBay/www/my_php_project
)で、composer.json
ファイルを作成します。
ファイルはJSONオブジェクトで、require
キーで必要な依存パッケージを指定します。キーはパッケージ名(通常はvendor/package
形式)、値は希望バージョン制約です。
Monolog(PHP向け有名ログライブラリ)をバージョン2.0以上インストールしたい場合:
json
{
"require": {
"monolog/monolog": "^2.0"
}
}
1
2
3
4
5
2
3
4
5
ここで^2.0
は「2.0.0以降、3.0.0未満」の互換バージョンという意味です。
2. 依存パッケージのインストール
composer.json
のあるディレクトリでターミナルを開き、次のコマンドを実行します:
sh
composer install
1
コマンド実行後の動作:
- Composerが
composer.json
を読み込む - 依存ライブラリおよびそのサブ依存も解析
- 依存ライブラリを
vendor
ディレクトリにダウンロード - インストールした各ライブラリのバージョンを正確に記録する
composer.lock
を生成(このファイルはチーム共有や環境再現のためGitなどへコミット推奨) - オートローダー
vendor/autoload.php
を生成
インストール後、プロジェクト内にはvendor
ディレクトリとcomposer.lock
ファイルが新たに作成されます。
Composerのオートローディングを利用する
Composer最大の利点の1つはオートローディング機能です。様々な標準(PSR-0、PSR-4)に従いクラス名をファイルパスに自動対応し、統一的なローダーファイルを出力します。
オートローディング設定・活用手順は以下の通りです。
1. autoload
フィールドの設定
composer.json
内でautoload
フィールドを追加または編集します。たとえば、PSR-4標準でApp\
名前空間をsrc/
ディレクトリに割り当てる場合:
json
{
"require": {
"monolog/monolog": "^2.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
App\
で始まるクラスは、src/
以下の対応ファイルが読み込まれます(例:App\MyClass
→src/MyClass.php
)。
2. オートローダーファイルの再生成
autoload
構成を編集後、次のコマンドでComposerのオートロードマップを更新します:
sh
composer dump-autoload
1
このコマンドでvendor/autoload.php
が再生成されます。依存追加・更新だけの場合はcomposer install
やcomposer update
でも自動で反映されます。
3. コード内でオートローダーを取り込む
PHPスクリプトの先頭で下記を記述し、Composerのオートローダーを読み込みます:
php
<?php
// Composerオートローダーを読み込む
require __DIR__ . '/vendor/autoload.php';
// Composerでインストールしたライブラリやautoloadで指定した自作クラスがそのまま使える
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use App\MyClass; // App\名前空間を設定している場合
// Monologライブラリを利用
$log = new Logger('name');
$log->pushHandler(new StreamHandler('your.log', Logger::WARNING));
$log->warning('これは警告です!');
// 自作クラスの利用(autoloadを設定している場合)
// $myObject = new MyClass();
// $myObject->doSomething();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
このrequire __DIR__ . '/vendor/autoload.php';
一行で、プロジェクト全体でComposer管理のクラスを自由に利用でき、何度もrequire
/include
を書く手間を省けます。
依存パッケージの更新
プロジェクト進行やライブラリアップデートに伴い、依存パッケージの新バージョンを導入したい場合があります。
ターミナルで下記コマンドを実行:
sh
composer update
1
composer update
はcomposer.json
に記載の全依存・サブ依存の最新バージョン(制約内)を確認- 新バージョンがあればダウンロード・インストール
- 最後に、インストール内容を正確に反映した
composer.lock
が再生成されます
重要ヒント:
composer install
とcomposer update
の違い:composer install
はプロジェクト初回セットアップや既存ロックファイルに従った依存インストール用で、バージョンの厳密な再現性を保ちます。composer update
はcomposer.json
に基づき依存を最新化し、composer.lock
も更新します。チーム開発では、基本的にアップデート時だけcomposer update
を実行し、その後composer.json
/composer.lock
をコミットしましょう。
ServBay環境下でComposerを利用する際の注意点
ローカル開発を快適にするServBayですが、Composer利用時には以下にもご注意ください。
- ターミナル環境: ServBay環境用ターミナルでComposerコマンドを実行してください。ServBayはアクティブなPHPバージョンをPATHに自動追加し、新しいターミナルで
php
やcomposer
コマンドをすぐ使えるようにしています。もしcommand not found
エラーが出る場合は、ターミナル再起動やServBay本体の稼働状態をご確認ください。 - PHPバージョン切り替え: ServBayなら複数PHPバージョン切り替えが簡単。
composer
コマンドはServBayで選択・有効化したPHPで動作します。特定プロジェクトで古いPHP対応パッケージを使う場合は、先にServBayコントロールパネルで適切なPHPバージョンへ切り替えてからComposerを実行してください。 - プロジェクトパス: WebプロジェクトはServBayのデフォルトルート(
/Applications/ServBay/www
)下サブディレクトリに作成することを推奨。「サイト」設定でプロジェクト毎にWebアクセスも簡単です。必ずプロジェクトディレクトリ内でComposerコマンドを実行しましょう。
サンプルプロジェクト: GuzzleHttpライブラリの利用
ここでは、ServBay環境でComposerを使い、人気PHP HTTPクライアント「GuzzleHttp」を導入・活用する方法を簡単に紹介します。
プロジェクトディレクトリの作成・移動: ServBayのWebルートで新しいディレクトリを作成し、ターミナルでその場所へ移動します。
shcd /Applications/ServBay/www mkdir guzzle_demo.servbay.demo cd guzzle_demo.servbay.demo
1
2
3ディレクトリ名はServBayブランド規則のデモ用ドメインを参考にしています。
composer.json
ファイル作成:guzzle_demo.servbay.demo
ディレクトリ内に、以下内容でcomposer.json
を作ります。json{ "require": { "guzzlehttp/guzzle": "^7.0" }, "autoload": { "psr-4": { "App\\": "src/" } } }
1
2
3
4
5
6
7
8
9
10※この例ではPSR-4オートローディングも設定(本例で不要でも、よい習慣のために記載)。
依存パッケージのインストール: 該当ディレクトリでインストールコマンド実行:
shcomposer install
1GuzzleHttp本体とサブ依存も含めてダウンロードされ、
vendor
フォルダやcomposer.lock
が作成されます。PHPファイルを作成し、依存ライブラリを利用:
guzzle_demo.servbay.demo
ディレクトリにindex.php
ファイルを作成し、下記のように記述。php<?php // Composerオートローダーを読み込む require __DIR__ . '/vendor/autoload.php'; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; echo "<h1>GuzzleHttp Demo</h1>"; echo "<pre>"; try { // Guzzleクライアントのインスタンス生成 $client = new Client(); // GETリクエストを送信 $response = $client->request('GET', 'https://httpbin.org/get', [ 'query' => ['param1' => 'value1', 'param2' => 'value2'] ]); // レスポンスボディを取得 $body = $response->getBody()->getContents(); echo "Response Body:\n"; echo $body; // ステータスコードを取得 $statusCode = $response->getStatusCode(); echo "\n\nStatus Code: " . $statusCode; } catch (RequestException $e) { // リクエスト例外の処理 echo "Request Exception:\n"; echo $e->getMessage(); if ($e->hasResponse()) { echo "\nResponse Status: " . $e->getResponse()->getStatusCode(); echo "\nResponse Body: " . $e->getResponse()->getBody()->getContents(); } } catch (\Exception $e) { // その他の例外処理 echo "An error occurred:\n"; echo $e->getMessage(); } echo "</pre>"; ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44このファイルはオートローダーを取り込んだ後、GuzzleHttpクライアントでテスト用APIにリクエストし、その結果を表示します。
ServBayサイト設定: ServBayコントロールパネルの「サイト」(または従来の「ホスト」)タブを開き、「追加」ボタンより、
/Applications/ServBay/www/guzzle_demo.servbay.demo
を参照先としてサイト追加、ドメインはguzzle_demo.servbay.demo
指定。保存後、対応Webサーバ(CaddyやNginx等)を再起動してください。ブラウザからアクセス: ブラウザで
http://guzzle_demo.servbay.demo/
へアクセス。PHPスクリプトが正しく実行され、https://httpbin.org/get
から取得したデータが画面に表示されます。
よくある質問 (FAQ)
Q: PHP 5.6使用時にComposerが動作しません。どうしたらよいですか?
A: ServBayは、最新の2.8.xと古いPHPバージョン対応の2.2.x LTSという2つのComposerバージョンを用意しています。PHP 5.6対応のためには「Composer 2.2 LTS」をインストールしてからcomposer-2.2
コマンドを利用してください。
Q: ターミナルで composer
実行時に command not found
エラーが表示されます。対処法は?
A:
- ServBayアプリケーションが起動しているか確認してください。
- ターミナルウィンドウを一度閉じてから再度開きます(ServBayは起動時に環境変数をセットします)。
- ServBayコントロールパネルでPHPバージョンが少なくとも1つ有効になっているか確認を。
- 問題が解決しない場合は、ServBay指定のPHP実行ファイルパスからComposerを呼び出してください(例:
/Applications/ServBay/php/8.2/bin/php /usr/local/bin/composer install
)。パスは環境によって異なりますが、ServBayではできる限りそのままcomposer
だけで使える設計になっています。
Q: ServBayの特定PHPバージョンでComposerを使う方法は?
A: Composerコマンドは、ServBayコントロールパネルで現在有効なPHPバージョンを利用します。切り替えたい場合は、コントロールパネルで目的のPHPを選択・有効化した後に、新たなターミナルでcomposer
を実行してください。
Q: composer.lock
ファイルの意義とGitへのコミットの必要性は?
A: composer.lock
は、composer install
やcomposer update
実行時にインストールした各依存ライブラリの正確なバージョンを記録します。**必ずバージョン管理(Gitなど)で共有しましょう。**これにより、チーム、テスト環境、プロダクション環境まで全員が同じ依存バージョンを使うことができ、「自分の環境では動くのに…」といったトラブルを回避し、安定したデプロイが可能になります。プロジェクトクローン後のcomposer install
もcomposer.lock
を最優先で参照します(単にcomposer.json
のバージョンだけに依存しません)。
まとめ
ServBayはComposerを事前統合・設定することで、PHP開発者に効率的かつ快適なローカル開発環境を提供します。複数PHPバージョンでの依存管理やオートローディングも簡単、コード開発に集中でき生産性と品質が大幅に向上。ServBayとComposerの組み合わせは、現代PHP開発の強力なパートナーとなり、プロジェクト構築・保守の効率化を実現します。