【问题标题】:Set environmental variables for the command line AND webserver (PHP)为命令行和 Web 服务器 (PHP) 设置环境变量
【发布时间】:2014-09-02 05:27:58
【问题描述】:

我正在使用 PHP、NGINX 和 Mac/linux。我想设置环境变量,以便可以从命令行或网络服务器运行的脚本访问它们。

在我的 nginx 配置中设置 $_SERVER fastcgi 参数不起作用,因为它们在通过命令行运行的 cron 作业中不可用。

出于安全原因,在网络应用程序本身中设置变量不是一个好主意,所以我也不想这样做。

这样做的正确方法是什么?

【问题讨论】:

  • 参考文档php.net/manual/en/function.putenv.php。是你要找的吗?
  • @Athafoud 谢谢,但它们不能在脚本中设置。这是一个安全问题。
  • 明白了!为什么不将变量转储到两个脚本都可以访问的文件中?另外,如果我没记错的话cron 在非常严格的环境中运行,无法完全访问完整路径

标签: php linux nginx environment-variables


【解决方案1】:

一种方法是将php.ini 中的auto_append_file 设置为具有setenv() 行的PHP 文件。然后使用getenv()。我不确定 OSX 是否有单独的 php.ini web 和 cli 文件。

刚刚重读并看到您声明 Mac/Linux。对于 Linux,您可以在 /etc/profile 中设置这些变量或在 /etc/profile.d 中设置文件。快速搜索显示 OSX 的 /etc/launchd.conf。不确定这些文件的范围,但可能值得一试。

【讨论】:

  • 编辑了可能的替代方案。
  • 再次感谢,几乎完成了在 mac 上的第一个选项的测试。之后将进入 linux/ubuntu 并报告两者。
  • so auto_append_file 在 Mac 的 php.ini 中绝对适用于 web 和 cli。我认为没有理由该解决方案不适用于任何操作系统。我都准备好了谢谢!
  • 请记住,许多 Linux 发行版都有单独的 php.ini 用于 cli 和 apache。
猜你喜欢
  • 2012-11-26
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多