LoginSignup
1
0

More than 1 year has passed since last update.

PHP で GCP を利用する際の認証設定

Posted at

PHP から GCP を利用するときの credentials の設定について調べてみると「サーバーの環境変数に設定しましょう」という記事が見つかる。
必ずしもサーバーの環境変数を設定できる環境とは限らないので、今回は別の方法も調べてみた。

基本的には githubの公式 や、 AUTHENTICATION.mdに書いてある。

putenv を利用する

サーバーを直接操作できないなら PHP から操作すればいいじゃない、でお馴染み putenv さんの登場。
動作としてはサーバーの環境変数を設定したのと同じになる。
絶対パスで設定する。

putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json');

クラス初期化時のオプションに入れる

基本的には keyFilePath という名前で、絶対パスを入れる。
しかし、一部のクラスでは crecentials という名前になっているので、認証がうまくいかなければ、こちらを試してみると良い。

なお、どちらのケースにおいても json の中身を配列として直接ハードコードして指定することは可能だ。
しかし ソースコードが流出した時に大変なことになる ので、絶対やらない こと。

keyFile のケース

use Google\Cloud\Storage\StorageClient;

// ファイルパスを指定
$client = new StorageClient([
  'keyFilePath' => '/path/to/credentials.json',
]);

// 配列で指定
$client = new StorageClient([
  'keyFile' => json_decode(file_get_contents('/path/to/credentials.json'), true),
]);

credentials のケース

use Google\Cloud\Vision\V1\ImageAnnotatorClient;

// ファイルパスを指定
$client = new ImageAnnotatorClient([
  'credentials' => '/path/to/credentials.json',
]);

// 配列で指定
$client = new ImageAnnotatorClient([
  'credentials' => json_decode(file_get_contents('/path/to/credentials.json'), true),
]);

サーバー内の特定の場所に設置する

認証周りのソースコードを読み解いてみると、以下の場所に設置しても良いようだ。

  • windows: %APPDATA%/gcloud/application_default_credentials.json
  • others: $HOME/.config/gcloud/application_default_credentials.json

認証に関する全体の優先順位

  1. クラス初期化時のオプション
  2. サーバーの環境変数 (≈ putenv)
  3. サーバー内の特定の場所に設置
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0