GCP Laravel PHP

Laravelで環境変数が読み込めなくなったときの対処法

GCP(Google Cloud platform)を使っていて、

"message": "Request had insufficient authentication scopes.",
    "code": 7,
    "status": "PERMISSION_DENIED",
    "details": [
        {
            "@type": "www-authenticate",
            "data": "Bearer realm=\"https:\/\/accounts.google.com\/\", error=\"insufficient_scope\", scope=\"https:\/\/www.googleapis.com\/auth\/datastore https:\/\/www.googleapis.com\/auth\/cloud-platform\""
        }
    ]

というエラーがでました。
エラー内容を信じてscopeなどGCPの設定など見ていたんですがどうも認証のためのkeyfile.jsonを読んでくれていない様子。
原因を追求していくとパス読み込み部分でphpのgetenv()関数が機能しておらず、環境変数を設定しているにも関わらずfalseが返ってきていました。

対処法

色々調べた結果、Laravelのconfigキャッシュ( bootstrap/cache/config.php )があるとgetenv()関数が値を返してくれなくなるとのこと。

php artisan config:clear

でキャッシュをクリアすることで正常に動作するようになりました。
config()関数では正常に取得できていたんですが、外部ライブラリなど使う場合はgetenv()が使われていることもあるのでキャッシュしない方がよさそうです。

-GCP, Laravel, PHP

Copyright© F27P , 2021 All Rights Reserved Powered by AFFINGER5.