Selinux 阻止访问 GOOGLE_APPLICATION_CREDENTIALS .json

问题描述 投票:0回答:1

使用 Google Translate API,Selinux 似乎正在阻止访问我的 Google 凭据 .json 文件。 selinux 上下文是“unconfined_u:object_r:user_home_t:s0”,所以我尝试使用以下命令将其更改为 httpd_sys_content_t:“semanage fcontext -a -t httpd_sys_content_t [/path/filename]”和“restorecon -Rv [/path/filename]”但是这并没有解决问题。 该文件的正确 Selinux 上下文设置是什么?

我使用的是 Rocky Linux 9、Apache 版本 2.4.57 和 PHP 8.3.9。

PHP 代码(Google 翻译代码使用 Composer):

putenv("GOOGLE_APPLICATION_CREDENTIALS=".'/path/credentials.json');
use Google\Cloud\Translate\V2\TranslateClient;
$translate = new TranslateClient(); 

使用“sudo setenforce 0”关闭 Selinux 会使上述代码起作用。 使用“sudo setenforce 1”重新打开 Selinux 会导致它失败并出现卷曲错误。

谢谢。

php google-translate selinux
1个回答
0
投票

该解决方案不需要更改文件的权限或 Selinux 上下文。 这与 Selinux 阻止 Curl 的使用有关。 所以这就是修复:

// 检查当前 Selinux 配置设置:

  $ getsebool httpd_can_network_connect

  httpd_can_network_connect --> off

由于不允许网络连接,请更改它并确保启用 Selinux:

  $ sudo setsebool -P httpd_can_network_connect on    
  $ sudo setenforce 1

Google Translate API 现在可以通过 Curl 成功通信。

© www.soinside.com 2019 - 2024. All rights reserved.