david-canial/remote-config-tool
Composer 安装命令:
composer require david-canial/remote-config-tool
包简介
PHP client library for Firebase Remote Config (build artifacts only).
README 文档
README
Firebase Remote Config を操作するための PHP クライアントライブラリです。
- Google の service account を使って アクセストークンを取得。
- Remote Config の取得(ETag 付き)。
- ETag を使った更新 および force update をサポート。
シンプルなスクリプト、バッチ処理、既存バックエンドへの組み込みなどに適しています。
インストール
必要環境
- PHP 8.0+
- Composer
- Firebase プロジェクトと、
Firebase Remote Config Admin権限を持つ service account
Composer でインストールします:
composer require david-canial/remote-config-tool
service account と credentials の準備
-
Google Cloud Console を開きます:
- 「IAM と管理」→「サービス アカウント」
- 新しい service account を作成(既存のものを使っても OK)
-
権限(ロール)の付与:
- Firebase Remote Config を操作できるロールを付与します。例:
Firebase Remote Config Admin- もしくは同等の権限を含むカスタムロール
- Firebase Remote Config を操作できるロールを付与します。例:
-
JSON キーを作成:
- service account 詳細画面 → 「キー」タブ → 「キーを追加」→「新しいキーを作成」→ JSON
- ダウンロードした JSON ファイルを、例えば
/path/to/service-account.jsonに保存
-
Google 認証用の環境変数を設定:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json"
FIREBASE_PROJECT_IDを設定:
export FIREBASE_PROJECT_ID="your-firebase-project-id"
your-firebase-project-id は、JSON ファイル内の projectId か、Firebase コンソールのプロジェクト ID に対応します。
Laravel や Symfony などのフレームワークを利用している場合は、これらの値を
.envに定義し、フレームワーク側で読み込ませても構いません。
静的ファサード RemoteConfig を使った簡単な利用例
インストールと環境変数の設定が完了したら、RemoteConfig ファサードを利用できます:
<?php require __DIR__ . '/vendor/autoload.php'; use DavidCanial\RemoteConfigTool\RemoteConfig; // アクセストークンを取得 $token = RemoteConfig::token(); // Remote Config(ETag 付き)を取得 $result = RemoteConfig::get(); $etag = $result['etag']; $config = $result['data']; // 現在の ETag のみ取得 $etagOnly = RemoteConfig::etag(); // Remote Config の本体データのみ(ETag なし) $dataOnly = RemoteConfig::config();
環境変数 FIREBASE_PROJECT_ID を使わず、明示的に projectId を指定することもできます:
$etag = RemoteConfig::etag('your-firebase-project-id');
ETag を使った Remote Config の更新
Firebase Remote Config では、他の更新を誤って上書きしないように、更新時に ETag を送信することが推奨されています。
parameters を一部変更する例:
use DavidCanial\RemoteConfigTool\RemoteConfig; // 現在の設定を取得 $result = RemoteConfig::get(); $etag = $result['etag']; $config = $result['data']; // 例: 特定の parameter を変更したい場合 $parameters = $config['parameters'] ?? []; $parameters['example_param'] = [ 'defaultValue' => ['value' => '123'], ]; // 古い ETag を指定して Firebase に送信 $updateResult = RemoteConfig::update( ['parameters' => $parameters], $etag ); $newEtag = $updateResult['etag'] ?? null;
もし ETag が古い場合(他のクライアントが先に更新していた場合など)、Firebase は HTTP 412 (Precondition Failed) を返します。その場合は:
RemoteConfig::get()で最新の ETag と設定を再取得する- 自分の変更をその最新設定に再適用してから、再度 update する
Force update(ETag を無視して上書き)
状況によっては、ETag チェックを無視して常に現在の設定を上書きしたい 場合もあります:
use DavidCanial\RemoteConfigTool\RemoteConfig; // 新しい parameters を用意 $parameters = [ 'example_param' => [ 'defaultValue' => ['value' => 'force-update'], ], ]; $result = RemoteConfig::forceUpdate(['parameters' => $parameters]); $newEtag = $result['etag'] ?? null;
注意:
forceUpdateは他のクライアントによる変更を上書きする可能性があります。同時更新があり得る環境では慎重に使用してください。
RemoteConfigClient を直接利用する
より細かく制御したい場合や、独自の Guzzle クライアントを注入したい場合は、RemoteConfigClient クラスを直接利用できます:
use DavidCanial\RemoteConfigTool\RemoteConfigClient; use GuzzleHttp\Client as HttpClient; // 環境変数を利用してクライアントを生成 $client = new RemoteConfigClient(); // あるいは projectId と Guzzle クライアントを明示的に指定 //$http = new HttpClient(['timeout' => 30]); //$client = new RemoteConfigClient('your-firebase-project-id', $http); // アクセストークンを取得 $token = $client->getToken(); // Remote Config を取得 $result = $client->get(); $etag = $result['etag']; $config = $result['data'];
.env を使った設定読み込み(任意)
このライブラリは、vlucas/phpdotenv を利用して .env を読み込み、
その上で RemoteConfigClient インスタンスを生成するヘルパーも提供しています:
use DavidCanial\RemoteConfigTool\RemoteConfigClient; // 例: プロジェクトルートに .env がある場合 // .env // FIREBASE_PROJECT_ID=your-firebase-project-id // GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json $client = RemoteConfigClient::createFromEnvFile(__DIR__ . '/..'); $result = $client->get();
createFromEnvFile($directory, $file = '.env') は次のことを行います:
- 指定ディレクトリと
.envファイルの存在チェック .env内の環境変数を読み込み- 読み込んだ環境変数を元に
RemoteConfigClientインスタンスを生成
エラー処理
よくあるエラーとその原因:
-
GOOGLE_APPLICATION_CREDENTIALSが未設定またはパスが誤っている:google/authライブラリが、credentials を見つけられない場合に例外を投げます。- JSON ファイルのパスと、読み取り権限を確認してください。
-
FIREBASE_PROJECT_IDが未設定:RemoteConfigClientはRuntimeExceptionを投げます。そのメッセージは:"FIREBASE_PROJECT_ID が設定されていません。RemoteConfigClient のコンストラクタに projectId を渡すか、環境変数 FIREBASE_PROJECT_ID を設定してください。"
-
Firebase からの 4xx / 5xx エラー:
- 資格情報不足、ETag の不整合、ペイロードフォーマットの不備などが原因で、Guzzle の HTTP 例外としてスローされます。
\GuzzleHttp\Exception\ClientExceptionをキャッチすることで、レスポンスボディを確認できます。
基本的なエラーハンドリング例:
use DavidCanial\RemoteConfigTool\RemoteConfig; use GuzzleHttp\Exception\ClientException; try { $result = RemoteConfig::get(); } catch (ClientException $e) { $response = $e->getResponse(); $status = $response->getStatusCode(); $body = (string) $response->getBody(); // Firebase から返ってきたエラー内容をログに出すなどの処理 } catch (\Throwable $e) { // 環境変数の不足、ネットワークエラー、JSON パースエラーなど }
ライセンス
このパッケージは MIT ライセンス のもとで提供されます。商用・個人プロジェクトを問わず自由に利用できます。
remote-config-tool
remote-config-tool
remote-config-tool
david-canial/remote-config-tool 适用场景与选型建议
david-canial/remote-config-tool 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 01 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「Guzzle」 「firebase」 「remote-config」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 david-canial/remote-config-tool 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 david-canial/remote-config-tool 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 david-canial/remote-config-tool 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
simple api library.
Yii2 Extension for sending push notification with both Firebase Cloud Messaging (FCM) HTTP Server Protocols (APIs).
Create and authenticate users with Firebase Auth providers, and let Laravel Passport handle the rest!
Cloudflare Middleware For Guzzle
Simplifies working with holaluz API endpoints
Wrapper for Slack Web API
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-06