【问题标题】:Is there a way to access Apache2's SetEnv variables through PHP CLI?有没有办法通过 PHP CLI 访问 Apache2 的 SetEnv 变量?
【发布时间】:2021-10-09 10:49:17
【问题描述】:

我需要运行一个 php 脚本每 10 分钟刷新一次数据,我正在使用 cron 来完成。

crontab -e 配置为:

*/10 * * * * php my_file.php

在这个文件中,我使用$_SERVER['my_env_var'] 来检索变量的值,它是一个加密的字符串(它在apache2.conf 中设置为SetEnv MY_ENCRYPTED_VALUE 的东西)。 在 Web 浏览器中使用 debug 将正确输出值(它正在使用 apache 运行,因此它可以读取文件并识别我正在调用服务器上设置的变量)。

但是,cron 正在使用 CLI。以及使用时

<?php
    print_r($_SERVER);
?>

这里没有列出我的变量。

我知道他们不共享相同的 .ini 文件和 SAPI(apache2handler 与 cli)。

我看过其他帖子说:

“将它们设置为/etc/environment变量”

但如果可能的话,我宁愿不使用它(它安全吗?)。

但是,有没有办法通过 PHP CLI 访问 Apache2 的 SetEnv 变量?

【问题讨论】:

  • 当您通过 PHP 可执行文件直接在命令行上执行脚本时,甚至不涉及 Apache。
  • “在这个文件中,我使用 $_SERVER['my_env_var'] 来检索它。” - 是什么“它”,您需要运输什么样的价值,为什么要这样?
  • @CBroe 我的意思是检索变量的值。我正在存储加密值以连接到数据库,因此我不希望它们可以直接在 php 文件中访问。我将它们设置为 conf 文件中的 SetEnv 变量(我删除了读取、写入和 - 谁会? - 对组和用户执行权限,只为超级用户保留权限)。我知道 apache 不通过 CLI 参与,但我需要检索这些值:(
  • 是什么让您认为在 Apache 配置中设置变量比在服务器上使用任何其他配置文件更安全?

标签: php apache2


【解决方案1】:

正如@CBroe 所说,cli 与 cli 模式下的 PHP 没有关系。而且你仍然需要一些通用的环境变量,你可以从 CI CD 管道中获得帮助。它将把它们安全地保存在一个地方。

我们在谈论几乎相同的事情,我是说 env 应该由管道编写到目标系统,而不是由某个单独的团队手动维护。

CI CD 管道为我们提供了一种出于任何原因使用 env 变量的方法,并且安全性非常适合使用它。

【讨论】:

  • 请分享更多细节。为什么要在生产系统中涉及“CI CD 管道”?
  • 他们应该参与生产系统事实上的开发和登台也应该由 CI CD 提供服务。他可以将安全密码保存在 GitHub 中,并将它们作为环境变量推送到一个以上的地方,这些环境甚至不会写在文件中,我建议这样做,因为他的问题与 Apache 或代码无关。是否有意义??我可以解释更多。
  • 请通过编辑将所有此类解释添加到您的答案中。我仍然不明白为什么不应该正确配置目标服务器,以及你的方法应该如何使用管道来做到这一点
猜你喜欢
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多