3.

Composer インストール完全ガイド(Windows / macOS / Linux 対応)

編集
この記事の要点
  • Composer は PHP のデファクト依存管理ツール。composer.json に書いたライブラリを vendor/ へ取得
  • Windows は Composer-Setup.exe、macOS / Linux は公式 installer + mv composer.phar /usr/local/bin/composer でグローバル化
  • 導入確認は composer --version。最新化は composer self-update
  • プロキシ環境では ~/.composer/config.json や環境変数 HTTP_PROXY を設定
  • プライベートリポジトリ(GitHub Packages / Packagist 有料 / Bitbucket)は auth.json で認証

Composer とは

Composer は PHP のパッケージ管理ツールで、Node.js の npm / Python の pip / Ruby の bundler に相当します。プロジェクトルートに composer.json を置き、依存を宣言すると vendor/ ディレクトリにライブラリをダウンロードしてくれます。Laravel / Symfony / PHPUnit など現代の PHP 開発は Composer 前提です。

動作要件

  • PHP 7.2.5 以上(Composer 2.x)— 推奨は 8.1+
  • php コマンドが PATH に通っていること
  • OpenSSL(HTTPS 経由でパッケージを取得)
  • zip / unzip コマンド推奨(無くても動くが圧縮ライブラリ経由になる)

Windows へのインストール

もっとも簡単なのは Composer-Setup.exe を使う方法です:

  1. getcomposer.org/download から Composer-Setup.exe をダウンロード
  2. 実行。インストーラが php.exe のパスを自動検出(無ければ手動指定)
  3. 「Developer mode」はオフでよい(PATH を変更しない設定が安全)
  4. 完了後、コマンドプロンプトを開き直して composer --version
# 動作確認
composer --version
# Composer version 2.7.x ...

# プロジェクト初期化
mkdir myapp
cd myapp
composer init

# ライブラリ追加
composer require guzzlehttp/guzzle

macOS / Linux へのインストール

公式 installer をダウンロードして実行 → 生成された composer.phar/usr/local/bin/composer へ移動すると、どこからでも composer コマンドで呼び出せます。

# 1. installer をダウンロード
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# 2. ハッシュ検証(公式の値と一致するか)
HASH=$(curl -sS https://composer.github.io/installer.sig)
php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Installer OK'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

# 3. インストール
php composer-setup.php
php -r "unlink('composer-setup.php');"

# 4. グローバル配置
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

# 5. 確認
composer --version

主要コマンド一覧

コマンド説明
composer init対話で composer.json を生成
composer require pkg/nameパッケージ追加 + composer.json 更新
composer installcomposer.lock に従って vendor/ を構築(デプロイ用)
composer updatecomposer.json の制約内で最新化(lock 更新)
composer remove pkg/nameパッケージ削除
composer dump-autoload -oオートロード再生成(-o で最適化)
composer self-updateComposer 本体を最新化
composer outdated更新可能なパッケージ一覧
composer show導入済パッケージ一覧

composer.json の最小例

{
    "name": "mycompany/myapp",
    "description": "Sample app",
    "type": "project",
    "require": {
        "php": "^8.1",
        "guzzlehttp/guzzle": "^7.5",
        "monolog/monolog": "^3.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    },
    "autoload": {
        "psr-4": {
            "MyApp\\": "src/"
        }
    },
    "scripts": {
        "test": "phpunit"
    }
}

グローバル設定(~/.composer/config.json)

すべてのプロジェクトに共通の設定を入れられます:

{
    "config": {
        "process-timeout": 600,
        "preferred-install": "dist",
        "github-protocols": ["https"],
        "cache-dir": "~/.composer/cache"
    },
    "repositories": [
        { "type": "composer", "url": "https://packagist.jp" }
    ]
}

認証情報(auth.json)

プライベートリポジトリや有料 Packagist を使うときは auth.json に認証を書きます(プロジェクトルートか ~/.composer/):

{
    "http-basic": {
        "repo.packagist.com": {
            "username": "token",
            "password": "your-token-here"
        }
    },
    "github-oauth": {
        "github.com": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxx"
    },
    "bitbucket-oauth": {
        "bitbucket.org": {
            "consumer-key": "xxx",
            "consumer-secret": "yyy"
        }
    }
}

auth.json必ず .gitignore に追加 してください(トークンが含まれるため)。

プロキシ環境での設定

# 環境変数で設定
export HTTP_PROXY="http://proxy.company.com:8080"
export HTTPS_PROXY="http://proxy.company.com:8080"

# または composer の設定で
composer config -g http-basic.proxy.company.com user pass

# プロキシ越し動作確認
composer diagnose

自己更新と固定

# 最新版へ
composer self-update

# 1.x 系へ戻す(レガシーで必要なら)
composer self-update --1

# 直前のバージョンへロールバック
composer self-update --rollback

# 特定バージョンを固定(CI で再現性確保)
composer self-update 2.6.5

よくあるトラブル

  • memory limit エラー: COMPOSER_MEMORY_LIMIT=-1 composer install
  • SSL 証明書エラー: php.ini の openssl.cafile に最新の cacert.pem を設定
  • GitHub API rate limit: ~/.composer/auth.jsongithub-oauth 設定
  • 古いキャッシュで挙動おかしい: composer clear-cache
  • Could not authenticate: auth.json のトークン期限切れ → 再発行

FAQ

Q: composer installcomposer update の違いは?
A: install は composer.lock 通りに固定インストール(CI / 本番デプロイ用)。update は composer.json の制約内で最新版を取り、lock を書き換える(開発時の更新用)。

Q: composer.lock は git に入れるべきか?
A: 入れるのが正解です。チーム全員と CI / 本番で完全に同じバージョンを再現できます。

Q: ライブラリの脆弱性をチェックしたい
A: composer audit(Composer 2.4+)。または local-php-security-checker

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. インストール方法
  2. 文法
  3. Composerのインストール
  4. 内部関数
  5. フレームワーク
  6. エラー一覧
  7. 改行出力
  8. printとechoの違い
  9. シングルクォートとダブルクォートの違い
  10. returnとyieldの違い
  11. var_dumpをログ出力
  12. CSV読み込み
  13. 待機・処理の遅延
  14. ログファイルにエラーを出力する方法
  15. エラーログ出力関数
  16. URLパラメータの配列化
  17. empty, is_null. issetの判定比較表
  18. httpステータスコードの付与
  19. バージョンの確認
  20. php.ini
  21. APIを呼び出す方法
  22. 外部ファイルを呼び出す方法
  23. カンマ区切りの文字列を配列に変換
  24. 配列からランダムに値を取り出す方法
  25. Webスクレイピング