Php 缺少Google云的API密钥

Php 缺少Google云的API密钥,php,google-cloud-platform,Php,Google Cloud Platform,我正在尝试使用PHP,按照说明操作后,我编写的应用程序中出现了一个错误: 致命错误:未捕获的Google\Cloud\Core\Exception\ServiceException:{ “错误”:{“代码”:403,“消息”:“请求缺少有效的API 密钥“,”状态“:“权限被拒绝”} 我已经下载了帐户密钥文件,运行了导出,但是我得到了403错误 我已经在项目文件夹中创建了一个指向该文件的符号链接,运行导出,但得到403错误 我将导出放在“.bash_profile”文件中,退出了终端会话,但得到

我正在尝试使用PHP,按照说明操作后,我编写的应用程序中出现了一个错误:

致命错误:未捕获的Google\Cloud\Core\Exception\ServiceException:{ “错误”:{“代码”:403,“消息”:“请求缺少有效的API 密钥“,”状态“:“权限被拒绝”}

我已经下载了帐户密钥文件,运行了导出,但是我得到了403错误

我已经在项目文件夹中创建了一个指向该文件的符号链接,运行导出,但得到403错误

我将导出放在“.bash_profile”文件中,退出了终端会话,但得到403错误

通过设置为应用程序代码提供身份验证凭据 环境变量GOOGLE\u APPLICATION\u CREDENTIALS。代替 [PATH]与包含服务的JSON文件的文件路径 帐户密钥和带有文件名的[文件名]仅此变量 应用于当前shell会话,因此如果打开新会话, 再次设置变量

当我运行时:
echo$GOOGLE\u APPLICATION\u CREDENTIALS
导出不在那里,所以我再次运行了它,但得到了403错误

我严格按照文档进行操作,我已经检查了三次,每次都得到相同的403错误

我没有看到要求我在应用程序中存储API键的字符串值的说明,但我发现许多人建议这样做,但没有提供如何或在何处存储的示例


因此,欢迎您提供一些建议

不要使用导出;而您的
~/.bashrc
不是apache的
.bashrc

但是将文件的路径直接添加到PHP代码中;例如,放入一个
config.php

使用
putenv('GOOGLE\u APPLICATION\u CREDENTIALS=/var/www/[FILE\u NAME].json')

同时使用
.htaccess
阻止HTTP访问该文件

甚至可以使用
.htaccess
进行设置

SetEnv GOOGLE_APPLICATION_CREDENTIALS "/var/www/[FILE_NAME].json"

您好,Martin,“.htaccess”没有执行任何操作,但“config.php”执行了操作,但这是另一个错误:“致命错误:未捕获域异常:无法读取GOOGLE_应用程序指定的凭据文件。\u凭据:文件路径/name.json在/path/vendor/GOOGLE/auth/src/CredentialsLoader.php:73中不存在”奇怪的是,我得到了与符号链接的相对路径和实际文件的绝对路径相同的错误。@WayneSmallman
.htaccess
文件可能位于错误的位置;当直接引用文件时,该路径应该是从顶部开始的绝对路径
/
,或者相对于
CredentialsLoader.php
,或者可能相对于访问它的脚本的位置。符号链接通常仅在使用
选项+FollowSymLinks
启用时有效。另外,当它完全位于web根目录之外时,由于“openbasedir”限制,这通常不起作用;应用程序正在使用它。此外,顶部还有:
选项+FollowSymlinks
。我使用根目录的绝对路径再次尝试了该指令,但它仍然无法识别它。我在“config.php”中尝试了相同的路径,这给了我最初的错误。我在API密钥文件名中找到了一个空格,它应该是“-”,现在可以工作了。马丁,谢谢。@WayneSmallman Linux需要用反斜杠转义的路径中的空格。