GCP Laravel PHP

【Laravel/PHP】openssl_sign(): supplied key param cannot be coerced into a private key の 対応方法

開発環境

  • Laravel 9
  • PHP 8.1
  • GCP BigQuery

概要

LaravelでGCPのBigQueryを実装しているとき、BigQueryClient のインスタンスを作成するために、

GCPの認証情報を設定する必要がありました。

jsonファイルに書かれてある10個のkeyとvalueをそれぞれ、envファイルに記載し

GCP_TYPE=********
GCP_PROJECT_ID=********
GCP_PRIVATE_KEY_ID=********
GCP_PRIVAATE_KEY=-----BEGIN PRIVATE KEY-----******** 省略 ********-----END PRIVATE KEY-----

〜 以下省略 〜

それぞれenvファイルに認証情報を記載して、Laravelでenv関数で環境変数を呼び出しました

'type' => env('GCP_TYPE'),
'project_id' => env('GCP_PROJECT_ID'),
'private_key_id' => env('GCP_PRIVATE_KEY_ID'),
'private_key' => env('GCP_PRIVAATE_KEY'),

〜 以下省略 〜

すると、以下のエラーが出力されました。

openssl_sign(): supplied key param cannot be coerced into a private key

openssl_sign(): 提供されたキー パラメータを強制的に秘密キーにすることはできません

private keyの記述方法が良くなかったようです。

結論

" "(ダブルクォーテーション) で囲んで、文字列にする

GCP_PRIVAATE_KEY="-----BEGIN PRIVATE KEY-----******** 省略 ********-----END PRIVATE KEY-----"

-----BEGIN PRIVATE KEY----- から始まって-----END PRIVATE KEY----- で終わるようなKeyは、

ダブルクォーテーションで囲んで文字列として記述する必要があるようです。

envファイルではクォーテーションやダブルクォーテーションを使わないという先入観で、

かなり時間を使ってしまいました。

Laravel × BigQueryでInsertやDeleteする方法

こちらの記事ではLaravelでBigQueryにInsertやDeleteする方法をご紹介しています

こちらの記事も参考にしてみてください

-GCP, Laravel, PHP