GRPC の問題のトレース
準備
ログファイルに書き込む前に、必ず初期化して書き込み権限を有効にしてください。次の例では、ログファイルの名前は /var/log/grpc.log
になります。
touch /var/log/grpc.log
chmod 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 のエラーをご覧ください。