【发布时间】: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 配置中设置变量比在服务器上使用任何其他配置文件更安全?