使用PHP获取用户环境变量


Getting user environment variables using PHP

在centos和Redhat上,我创建了一个文件/etc/profile.d/marketing_vars.sh,并在其中添加了以下行

#Vars  for PowerMail
export CmsRoot="/var/www/html/cms/"
export PMRoot_Dev="/var/www/html/powermail/"
export PMRoot_QA="/var/www/html/powermail/"
export PMRoot_Pro="/var/www/html/powermail/"

在命令行上,我点击"source marketing_vars.sh"answers"chmod+x/etc/profile.d/marketing_vars.sh"

然后我创建了一个test.php文件,并将这些行添加到中

error_reporting(E_ALL ^ E_NOTICE);
echo "PMRoot_Dev = " . getenv("PMRoot_Dev");
echo "<br>";
echo "PMRoot_QA = " . getenv("PMRoot_QA");
echo "<br>";
echo "PMRoot_Pro = " . getenv("PMRoot_Pro");
echo "<br>";

当我浏览test.php时,我没有得到任何变量的值。有人能帮忙吗?

Centos上的Apache没有像您期望的那样包含env变量。一种解决方案是手动将文件包含在/etc/sysconfig/httpd中。

  • 将/etc/profile.d/marketing_vars.sh附加到/etc/sysconfig/httpd的末尾
  • 重新启动apache

在apache、CLI和crons中保持一致的最佳解决方案是使用配置文件并包含/解析它以获取变量。