Troubleshooting

Tracing GRPC issues

Before you begin

Be sure to initialize and enable write permissions before writing to your log file. In the following example, the log file is named /var/log/grpc.log:

touch /var/log/grpc.log
chmod 666 /var/log/grpc.log

If you encounter file permissions issues, you might need to preface the previous commands with sudo.

Logging to a file

To save gRPC logs to a file, add the following lines to your php.ini file:

grpc.grpc_verbosity=debug
grpc.grpc_trace=all,-timer_check
grpc.log_filename=/var/log/grpc.log

To write logs to stderr instead, exclude the last line from the previous example. For more information about other options, see gRPC environment variables.

Error Details

Google Cloud services follow AIP-193 guidelines when returning errors. Google Cloud services use a defined set of standard error payloads, which you can find in google.rpc.error_details.proto. These cover the most common API errors, such as quota failure and invalid parameters.

API errors emitted by PHP client libraries contain message, code, status, and details fields. Within the details field, additional google.rpc.ErrorInfo data appears in reason, domain, and metadata fields. The following sample shows an error that might appear if you called the Translation library with a cloud project before enabling the Translate API:

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"
                }
            ]
        }
    ]
}

For more information about the general error model for Google APIs, see Cloud API Errors.