【问题标题】:Loading GOOGLE_APPLICATION_CREDENTIALS in Laravel 5在 Laravel 5 中加载 GOOGLE_APPLICATION_CREDENTIALS
【发布时间】:2018-03-05 22:33:45
【问题描述】:

我正在使用 Laravel 5.2,我按照官方文档中的建议使用 php artisan config:cache 以提高速度。

您可能知道,此命令使 .env 文件变量无法直接访问(您可以使用 php artisan tinker 对其进行测试),因此所有对 env()getenv() 函数的调用都必须替换为 @代码中的987654326@,除了config文件夹中的文件。执行此命令后,env('APP_ENV') 等调用返回 NULL。

在我的项目中,我使用 google-auth-library-php 连接到 Google Cloud。不幸的是,在 CredentialsLoader.php 文件中有一个对函数 getenv(self::ENV_VAR) 的调用,该函数试图获取 Google 凭据文件的路径。当我运行命令php artisan config:cache时,无法从.env文件中读取路径,无法完成连接。

我可以看到 3 种方式继续:

  1. 忘记运行php artisan config:cache
  2. 在这里询问是否有人知道如何将 Google 凭据文件的路径指定为包的任何函数的参数。
  3. (请原谅我,上帝)更正 CredentialsLoader.php 文件(getenv()config()),运行命令并在存储库中跟踪此文件,然后此更改将在每个团队成员拉取时传播。

提前谢谢你!

【问题讨论】:

  • 从 env 加载的是 CredentialsLoader::fromEnv。在 CredentialsLoader 上使用另一种方法是有意义的,或者使用配置中的设置手动创建凭据。
  • 嗨!现在已经 3 年了... :) 你的解决方案是什么?
  • 好吧,实际上我是用一个特定的配置完成的...... Nignx + php 和 fastcgi。我会回答,因为如果将来有人会再次访问这个问题,也许会有所帮助

标签: php laravel google-cloud-storage gcp google-cloud-sdk


【解决方案1】:

这是一个非常古老的问题,但即使在较新版本的 Laravel 中,它也可能对遇到同样问题的人有用。 基本上我没有适用于所有可能环境的解决方案,但它给出了这个想法。 我的环境运行php7.4-fpmNGINX。 如果您使用相同的环境,您的 php 文件将有一个 location 指令。 Nginx 可以用fastcgi_param 设置FastCGI 参数,你可能已经用过SCRIPT_FILENAME 等。 然后可以添加

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    [...]
    fastcgi_param GOOGLE_APPLICATION_CREDENTIALS "/absolute/path/to/keyfile.json";
}

然后只需重新加载 Nginx(例如,对于 Ubuntu 20.04,sudo systemctl reload nginx)。

对于 Apache,同样的想法可能适用于 SetEnv https://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv

【讨论】:

    【解决方案2】:

    如果还是遇到这个错误,可以在第一个参数中使用keyFileindex指定文件:

    $storage = new StorageClient([
       'keyFile' => json_decode(file_get_contents($path), true),
    ]);
    

    或者您可以使用keyFilePath index 直接指定 .json 文件进行配置

    $storage = new StorageClient([
       'keyFilePath' => '/path/to/json/CompanyDataStorage-foobarbaz.json',
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-30
      • 2015-04-23
      • 2015-06-19
      • 1970-01-01
      • 2015-09-05
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多