我有一个运行PHP的Linux VM(Linux Lite 4)。 我在终端中添加了一个自定义环境变量,
export MYVAR=bar
,然后可以在本地看到它,echo $MYVAR
返回bar
。
问题是:当我通过ssh连接到此服务器并尝试通过运行服务器上的简单PHP脚本来查询变量时
<?php
var_dump(getenv('MYVAR'));
我得到bool(false)
。成功查询其他默认env变量。
如果我做错了事,请随时纠正我。
答案 0 :(得分:3)
UNIX中的环境变量不是全局的。它们是每个过程专用的。当某个进程(例如您的交互式外壳程序)启动新进程时,通常会向新进程提供其环境变量的副本。因此,当您在交互式外壳中定义新的环境变量时,它对已经运行的进程(例如Web服务器)是不可见的。对于独立于定义env var的外壳启动的进程(例如php程序)也不可见。
如果不了解您的配置的更多信息,就不可能提供好的建议。但是考虑到您所写的内容,将export MYVAR=bar
放在您的〜/ .bashrc 中可能就足够了(假设bash是您的登录shell)。