【问题标题】:How to use environment variables in a PHP script using getenv()?如何使用 getenv() 在 PHP 脚本中使用环境变量?
【发布时间】:2016-05-19 11:52:18
【问题描述】:

我在我的 PHP 脚本中使用 getenv() 时遇到问题。我已经在我的 bash 会话中设置了环境变量:

MYPATH=~/some/kind/of/path

我已经验证它可以使用:

echo $MYPATH

我的问题:

为什么当我在 PHP Web 脚本中使用 getenv( 'MYPATH' ) 时返回 false?我希望 /home/user/some/kind/of/path 会被返回。

参考:http://php.net/manual/en/function.getenv.php

【问题讨论】:

  • 你是从命令行运行这个 PHP 脚本吗?
  • 没有。我通过我的网络服务器(Apache)运行它。我已经更新了我的问题以明确这一点。
  • 然后你需要为 Apache 设置环境变量....或者使用 SetEnv 将它添加到你的 vhosts 文件或 .htaccess 文件中;在你的 bash 中设置它只会使它在 CLI 中可用

标签: php bash ubuntu environment-variables


【解决方案1】:

如果要获取当前目录的文件路径,可以这样:

define("FILE_ROOT", dirname(__FILE__));

那么当你想使用它时:

echo FILE_ROOT;

【讨论】:

  • 就我而言,这不是我想做的。不过谢谢你的建议。
【解决方案2】:

如果你在 taht 之后设置 var 并调用 php 脚本,在同一个 shell 会话中,你必须export环境变量:

当某个变量被导出到环境时,它被传递到所有后代进程的环境中。当 php 创建一个新的“子进程”时,您必须与它共享“环境”和 vars,这就是使用 export 语句时发生的情况。

【讨论】:

  • 我没有通过 CLI 运行 PHP 脚本,抱歉没有说清楚。我已经更新了我的问题。
【解决方案3】:

如果您尝试通过 Web SAPI 中的 PHP 访问此环境变量,则需要在您的网络服务器的配置中设置环境变量,例如在vhost 部分使用SetEnv

<VirtualHost hostname:80>
    ...
    SetEnv VARIABLE_NAME variable_value
    ...
</VirtualHost>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
相关资源
最近更新 更多