PHP での依存関係を指定する

PHP の依存関係を管理するには、Composer を使用します。

Composer のインストール

Composer をまだインストールしていない場合は、次の手順でインストールします。

  1. 任意の場所に Composer をダウンロードします。

  2. ダウンロード完了後、composer.phar ファイルをシステムパス内のディレクトリに移動します。次に例を示します。

    mv composer.phar /usr/local/bin/composer
    

composer.json ファイルの作成

composer.json ファイルには、関数の依存関係が列挙されます。このファイルは、手動で作成するか、次のコマンドを実行して作成します。

composer init

このコマンドを実行すると、対話形式で、整ったデフォルト設定の提示とともにフィールドへの入力が促されます。

依存関係を宣言する

依存関係を宣言するには、依存関係を含む composer.json ファイルを関数コードのディレクトリに追加します。この例では、Functions Framework を必須とし、start スクリプトを追加しています。

{
    "require": {
        "php": ">= 8.1",
        "google/cloud-functions-framework": "^1.1"
    },
    "scripts": {
        "start": [
           "Composer\\Config::disableProcessTimeout",
           "FUNCTION_TARGET=helloHttp php -S localhost:${PORT:-8080} vendor/google/cloud-functions-framework/router.php"
        ]
    }
}

なお、Composer がキャッシュに保存された結果を使用できる場合、composer.json ファイルに定義したスクリプトは実行されません。

Functions Framework を依存関係として追加する

Cloud Run functions の PHP ランタイムには、Functions Framework が明示的な依存関係として必要です。Functions Framework を依存関係として追加するには、関数コードが含まれるディレクトリで次のコマンドを実行します(このディレクトリには composer.json ファイルも含まれている必要があります)。

composer require google/cloud-functions-framework

これにより、Functions Framework が composer.json に追加され、パッケージが vendor/ ディレクトリにインストールされます。

autoload.php ファイル

autoload.php は、vendor/ ディレクトリに含まれるファイルの 1 つです。

PHP スクリプトの先頭に次の行を追加して autoload.php ファイルを require すると、関数の他の依存関係が自動的に require されます。

require_once __DIR__ . '/vendor/autoload.php';

デフォルトでは、デプロイ時に送信されるファイル数を減らすために、生成される .gcloudignore ファイル内で vendor/ ディレクトリは無視されます。

依存関係の更新

関数の依存関係と composer.lock ファイルを更新するには、update コマンドを使用します。

composer update

これにより、プロジェクトのすべての依存関係が解決され、正確なバージョンが composer.lock に書き込まれます。