GOOGLE_APPLICATION_CREDENTIALS = .. / storage / app / service-account.json
我在.env文件中有一个google api凭据密钥。但是,在运行php artisan config:cache之后,无法加载凭据。在缓存配置之前,它可以正常工作。
我在供应商文件夹中的google api auth文件中找到了以下功能。看来Google服务默认使用.env。因此,在config:cache之后,fromEnv函数会中断。 使用另一种身份验证方法setAuthConfig('/ path / to / client_credentials.json')解决此问题。
/**
* Load a JSON key from the path specified in the environment.
*
* Load a JSON key from the path specified in the environment
* variable GOOGLE_APPLICATION_CREDENTIALS. Return null if
* GOOGLE_APPLICATION_CREDENTIALS is not specified.
*
* @return array JSON key | null
*/
public static function fromEnv()
{
$path = getenv(self::ENV_VAR);
if (empty($path)) {
return;
}
if (!file_exists($path)) {
$cause = 'file ' . $path . ' does not exist';
throw new \DomainException(self::unableToReadEnv($cause));
}
$jsonKey = file_get_contents($path);
return json_decode($jsonKey, true);
}
答案 0 :(得分:1)
原因是加载文件的方式。
您可能在视图/控制器中有此名称:env('GOOGLE_APPLICATION_CREDENTIALS ');
。但这会在您执行php artisan config:cache
时中断。您只应在视图/控制器中使用config()帮助器。因此,为了使其正常工作,您应该制作一个额外的google-config文件或将以下内容添加到config / services.php中:
'google' => [
'application-credentials' => env('GOOGLE_APPLICATION_CREDENTIALS'),
]
现在,您可以在视图/控制器中获取它:
config('services.google.application-credentials');
答案 1 :(得分:0)
如果您的env值包含空格,则需要将其用引号引起来。即APP_NAME =“ This is myapp”。请先确认。
根据您的情况,尝试使用GOOGLE_APPLICATION_CREDENTIALS =“ ../ storage / app / service-account.json”
答案 2 :(得分:0)
首次运行
php artisan cache:clear
然后
php artisan config:cache