GoogleCloudPlatform / php-docs-samples

A collection of samples that demonstrate how to call Google Cloud services from PHP.
http://cloud.google.com/php
Apache License 2.0
962 stars 1.03k forks source link

Permission Error Stackdriver Logging Laravel on App Engine Standard #1176

Closed neysi closed 2 years ago

neysi commented 4 years ago

Hello, I followed the tutorial from https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard

But the logging and error reporting doesn't work.

{ "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } }

I am using "laravel/framework": "^7.0"

Thank you

bshaffer commented 4 years ago

Hello! Could you provide me with a little more information? Where are you seeing this error? Does it show up in the logs, or when you deploy? Can you give a stack trace?

neysi commented 4 years ago

Hello! The error appears when creating a Log and when throwing an exception.

This shows in the web browser (When DEBUG = TRUE) :


ServiceException
HTTP 500 Internal Server Error
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
ExceptionStack Trace
Google\Cloud\Core\Exception\
ServiceException
in /workspace/vendor/google/cloud/Core/src/RequestWrapper.php (line 362)
in /workspace/vendor/google/cloud/Core/src/RequestWrapper.php -> convertToGoogleException (line 206)
in /workspace/vendor/google/cloud/Core/src/RestTrait.php -> send (line 94)
in /workspace/vendor/google/cloud/Logging/src/Connection/Rest.php -> send (line 60)
in /workspace/vendor/google/cloud/Logging/src/Logger.php -> writeEntries (line 412)
in /workspace/vendor/google/cloud/Logging/src/Logger.php -> writeBatch (line 380)
in /workspace/vendor/google/cloud/Logging/src/PsrLogger.php -> write (line 528)
in /workspace/vendor/google/cloud/Logging/src/PsrLogger.php -> sendEntry (line 413)
in /workspace/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php -> log (line 66)
in /workspace/vendor/monolog/monolog/src/Monolog/Logger.php -> handle (line 323)
in /workspace/vendor/monolog/monolog/src/Monolog/Logger.php -> addRecord (line 502)
in /workspace/vendor/laravel/framework/src/Illuminate/Log/Logger.php -> info (line 174)
in /workspace/vendor/laravel/framework/src/Illuminate/Log/Logger.php -> writeLog (line 123)
in /workspace/vendor/laravel/framework/src/Illuminate/Log/LogManager.php -> info (line 591)
in /workspace/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php -> info (line 261)
Facade::__callStatic('info', array('Hello Stackdriver! This will show up as log level INFO!'))
in /workspace/app/Http/Controllers/Web/IndexController.php (line 18)
{    public function test()    {      error_reporting(E_ALL);      \Log::info("Hello Stackdriver! This will show up as log level INFO!");      throw new \Exception('PHEW! We will see this in Stackdriver Error Reporting!');
IndexController->test()
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Controller.php call_user_func_array (line 54)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php -> callAction (line 45)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Route.php -> dispatch (line 225)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Route.php -> runController (line 182)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Router.php -> run (line 685)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> Illuminate\Routing\{closure} (line 128)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php -> Illuminate\Pipeline\{closure} (line 41)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php -> Illuminate\Pipeline\{closure} (line 76)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php -> Illuminate\Pipeline\{closure} (line 49)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php -> Illuminate\Pipeline\{closure} (line 56)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php -> Illuminate\Pipeline\{closure} (line 37)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php -> Illuminate\Pipeline\{closure} (line 66)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> Illuminate\Pipeline\{closure} (line 103)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Router.php -> then (line 687)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Router.php -> runRouteWithinStack (line 662)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Router.php -> runRoute (line 628)
in /workspace/vendor/laravel/framework/src/Illuminate/Routing/Router.php -> dispatchToRoute (line 617)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php -> dispatch (line 165)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> Illuminate\Foundation\Http\{closure} (line 128)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php -> Illuminate\Pipeline\{closure} (line 21)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php -> Illuminate\Pipeline\{closure} (line 21)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php -> Illuminate\Pipeline\{closure} (line 27)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php -> Illuminate\Pipeline\{closure} (line 63)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/fruitcake/laravel-cors/src/HandleCors.php -> Illuminate\Pipeline\{closure} (line 36)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/fideloper/proxy/src/TrustProxies.php -> Illuminate\Pipeline\{closure} (line 57)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> handle (line 167)
in /workspace/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php -> Illuminate\Pipeline\{closure} (line 103)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php -> then (line 140)
in /workspace/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php -> sendRequestThroughRouter (line 109)
Kernel->handle(object(Request))
in /workspace/public/index.php (line 55)
bshaffer commented 4 years ago

This is interesting, is it possible you added a credentials.json file or specified credentials to the Laravel application which are not the default credentials?

netwons commented 3 years ago

not work error { "message": "This API method requires billing to be enabled. Please enable billing on project #1051023892108 by visiting https:\/\/console.developers.google.com\/billing\/enable?project=1051023892108 then retry. If you enabled billing for this project recently, wait a few minutes for the action to propagate to our systems and retry.", "code": 7, "status": "PERMISSION_DENIED", "details": [ { "@type": 0, "data": "type.googleapis.com\/google.rpc.Help" }, { "@type": 0, "data": [ { "description": "Google developers console billing", "url": "https:\/\/console.developers.google.com\/billing\/enable?project=1051023892108" } ] }, { "@type": 1, "data": "type.googleapis.com\/google.rpc.ErrorInfo" }, { "@type": 1, "data": "BILLING_DISABLED" }, { "@type": 1, "data": "googleapis.com" }, { "@type": 1, "data": { "service": "vision.googleapis.com", "consumer": "projects\/1051023892108" } } ] } im api enabled

code in laravel

$imageAnnotator = new ImageAnnotatorClient([
            'credentials'=>"1.json"
        ]);
        $path="2.png";
        $image = file_get_contents($path);
        $response = $imageAnnotator->textDetection($image);
        $texts = $response->getTextAnnotations();

        printf('%d texts found:' . PHP_EOL, count($texts));
        foreach ($texts as $text) {
            print($text->getDescription() . PHP_EOL);

            # get bounds
            $vertices = $text->getBoundingPoly()->getVertices();
            $bounds = [];
            foreach ($vertices as $vertex) {
                $bounds[] = sprintf('(%d,%d)', $vertex->getX(), $vertex->getY());
            }
            print('Bounds: ' . join(', ', $bounds) . PHP_EOL);
        }

        $imageAnnotator->close();
bshaffer commented 3 years ago

Have you tried following the link provided by the error message and enabling billing on your project?

netwons commented 3 years ago

i activated but not billing

bhaidar commented 2 years ago

Was there any solution to this problem? I am facing something similar now. Thanks @bshaffer

bshaffer commented 2 years ago

It looks like the user never activated a billing account in their Google Cloud Project

AbokiNapoli commented 2 years ago

Hello @bshaffer what is the fix to this error?

meredithslota commented 2 years ago

The error message seen instructs users to create a billing account, as it is required for this API method. The links in the error go to the specific project, so you should see similar guidance if you are encountering a similar error. If folks are seeing a different error, please file a new issue. Thanks!