我正在尝试将Google's Natural Language API用于PHP,并按照说明进行操作,但是在编写的应用程序中出现错误:
致命错误:未捕获的Google \ Cloud \ Core \ Exception \ ServiceException:{ “错误”:{“代码”:403,“消息”:“该请求缺少有效的API 键。“,”状态“:” PERMISSION_DENIED“}}
我已经下载了帐户密钥文件,运行了导出,但是出现403错误。
我已经创建了一个指向项目文件夹中文件的符号链接,运行导出,但是出现403错误。
我将导出文件放在“ .bash_profile”文件中,退出了终端会话,但出现403错误。
通过设置为您的应用程序代码提供身份验证凭据 环境变量GOOGLE_APPLICATION_CREDENTIALS。更换 [PATH]包含您的服务的JSON文件的文件路径 帐户密钥,以及[FILE_NAME]和文件名。 仅此变量 适用于您当前的Shell会话,因此,如果您打开一个新会话, 再次设置变量。
当我运行:echo $GOOGLE_APPLICATION_CREDENTIALS
时,导出不存在,因此我再次运行它,但是出现403错误。
我按照文档中的字母进行操作,经过了三遍,每次遇到相同的403错误。
我没有看到任何说明要求我在应用程序中存储API密钥的字符串值,但是我发现很多人都建议这样做,但没有提供有关如何或在何处的示例。
因此,欢迎您提出一些建议!
答案 0 :(得分:1)
仅不使用导出;而您的~/.bashrc
不是Apache的.bashrc
。
但是将文件的路径直接添加到PHP代码中;例如。变成config.php
。
或使用putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/[FILE_NAME].json');
同时禁止使用.htaccess
通过HTTP访问该文件。
或,甚至可以使用.htaccess
进行设置
SetEnv GOOGLE_APPLICATION_CREDENTIALS "/var/www/[FILE_NAME].json"