GRPC の問題のトレース
準備
ログファイルに書き込む前に、必ず初期化して書き込み権限を有効にしてください。次の例では、ログファイルの名前は /var/log/grpc.log になります。
touch /var/log/grpc.logchmod 666 /var/log/grpc.log
ファイル権限の問題が発生した場合は、前述のコマンドの前に sudo を付ける必要があります。
ファイルへのロギング
gRPC ログをファイルに保存するには、次の行を php.ini ファイルに追加します。
grpc.grpc_verbosity=debug
grpc.grpc_trace=all,-timer_check
grpc.log_filename=/var/log/grpc.log
代わりに stderr にログを書き込むには、前の例の最後の行を除外します。他のオプションについては、gRPC 環境変数をご覧ください。
エラーの詳細
エラーを返す場合、Google Cloud サービスは AIP-193 ガイドラインに従います。Google Cloud サービスでは、定義済みの標準エラー ペイロードのセットを使用します。これは、google.rpc.error_details.proto にあります。これらは、割り当ての失敗や無効なパラメータなど、最も一般的な API エラーに対応しています。
PHP クライアント ライブラリによって出力される API エラーには、message、code、status、details の各フィールドが含まれます。
details フィールド内には、追加の google.rpc.ErrorInfo データが reason、domain、metadata フィールドに表示されます。次のサンプルは、Translation API を有効にする前に Cloud プロジェクトで Translation ライブラリを呼び出した場合に表示されるエラーを示しています。
Google\ApiCore\ApiException: {
"reason": "SERVICE_DISABLED",
"domain": "googleapis.com",
"errorInfoMetadata": {
"consumer": "projects\PROJECT_ID",
"service": "translate.googleapis.com"
},
"message": "Cloud Translation API has not been used in project PROJECT_ID before or it is disabled. Enable it by visiting https:\/\/console.developers.google.com\/apis\/api\/translate.googleapis.com\/overview?project=PROJECT_ID then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
"code": 7,
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "google.rpc.errorinfo-bin",
"reason": "SERVICE_DISABLED",
"domain": "googleapis.com",
"metadata": {
"consumer": "projects\PROJECT_ID",
"service": "translate.googleapis.com"
}
},
{
"@type": "google.rpc.help-bin",
"links": [
{
"description": "Google developers console API activation",
"url": "https:\/\/console.developers.google.com\/apis\/api\/translate.googleapis.com\/overview?project=PROJECT_ID"
}
]
}
]
}Google API の一般的なエラーモデルの詳細については、Cloud APIs のエラーをご覧ください。