Php getenv()在浏览器中工作,但在命令行中不工作
在我的服务器上,我有一个环境变量设置为“valueOfMyVariable”。我的问题是,如果在命令行中运行该文件,getenv()返回false,但如果从浏览器中运行该文件,则返回truePhp getenv()在浏览器中工作,但在命令行中不工作,php,linux,command-line,Php,Linux,Command Line,在我的服务器上,我有一个环境变量设置为“valueOfMyVariable”。我的问题是,如果在命令行中运行该文件,getenv()返回false,但如果从浏览器中运行该文件,则返回true 从命令行(php myfilename.php)运行此代码将返回'false' 从浏览器运行此代码将返回“valueOfMyVariable”。 我希望这两个调用的结果都是'valueOfMyVariable' 有人知道为什么在第一种情况下,我的变量是false?该问题是否来自配置问题 如果我不够清楚,请
从命令行(php myfilename.php
)运行此代码将返回'false'
从浏览器运行此代码将返回“valueOfMyVariable”。
我希望这两个调用的结果都是'valueOfMyVariable'
有人知道为什么在第一种情况下,我的变量是false
?该问题是否来自配置问题
如果我不够清楚,请随意询问精度,问题很简单,但很难正确解释,因为英语不是我的主要语言。听起来好像你没有在终端会话中导出环境变量
export myEnvVariable=someValue
php myfilename.php
它可能在浏览器中工作,因为Web服务器正在设置环境变量。需要检查的一件事是变量的大小写。@JasonK如果您的意思是在开关大小写中检查变量,那么在命令行中运行脚本,我总是以默认大小写结束,而不是
getenv('myEnvVariable')=='valueOfMyVariable'
大小写。它可以在浏览器中正常工作。根据操作系统的不同,getenv()并不总是不区分大小写。”路径“!=”PATH'它工作正常,谢谢。:)有没有办法将其保存在服务器的“内存”中?否则,每次启动ssh会话时,我都必须再次写入导出行。不,环境变量不是这样工作的。环境是从调用进程继承的一组变量。这是否意味着从服务器crontab调用的文件也无法访问该环境变量?是的,这是正确的。环境变量通常在shell启动脚本中设置,如.bashrc
或.profile
。这些脚本不是由cron
自动运行的。通常的过程是将变量设置放入使用include
或require
加载的PHP脚本中。