设置 Apache2 PATH 环境变量

设置 Apache2 PATH 环境变量

如何PATH为 Apache2 设置环境变量?我尝试在/usr/sbin/envvarshttpd.conf 中设置它SetEnv PATH(并使用 PassEnv 将其传递给 SSI),但就是无法进行。

答案1

正如其他人所说,您可以通过使用环境变量文件来执行此操作。 我将在此答案中提供更多详细信息,并证明其有效。

此环境变量文件必须来自apachectl。在我的 Ubuntu 机器上,此文件位于/etc/apache2/envvars。在 RedHat 上,此文件位于/etc/sysconfig/httpd。在 FreeBSD 上,此文件设置在/etc/rc.conf(我认为)。或者,您也可以在启动脚本(/etc/init.d/httpdapachectl等)中设置此信息。但是,我认为最好尽可能不要修改启动脚本。最佳位置是在指定的环境变量脚本中。

  1. 验证此 envvars 文件的位置。在 Ubuntu 上,/etc/init.d/apache2ctl显示其来源/etc/apache2/envvars

    # the path to the environment variable file
    test -z "$APACHE_ENVVARS" && APACHE_ENVVARS='/etc/apache2/envvars'
    # pick up any necessary environment variables
    if test -f $APACHE_ENVVARS; then
       . $APACHE_ENVVARS
    fi
    
  2. 为了查看变量,我使用Perl printenv.cgi 脚本,并发布于http://example.org/cgi-bin/printenv.cgi。该脚本显示了以下路径:

    PATH = /usr/local/bin:/usr/bin:/bin
    
  3. 为了更改这些变量,我编辑了 envvars 文件:

    $ sudo vim /etc/apache2/envvars 
    
  4. 在此文件中修改您的 PATH。在此示例中,我将附加/opt/local/bin到我的 PATH。在某些情况下,您可能需要使用export PATH而不仅仅是PATH

    export PATH=$PATH:/opt/local/bin
    
  5. 重启 Apache

    $ sudo service apache2 restart
     * Restarting web server apache2
     ... waiting    ...done.
    $
    
  6. 查看结果http://example.org/cgi-bin/printenv.cgi,现在显示 PATH 现在包含一个新元素:

    PATH = /usr/local/bin:/usr/bin:/bin:/opt/local/bin
    

如果上述方法不起作用,则可能发生了一些异常。也许您的脚本忽略或覆盖了 PATH。

答案2

在 2.2 中,无法使用 Setenv 设置 PATH 环境变量。

http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv

答案3

在我的系统上它是/etc/apache2/envvars

答案4

您可以在初始化脚本的功能中设置它start(),如下所示:

start() {
        echo -n $"Starting $prog: "
        check13 || exit 1
        export PATH=${PATH}:/var/ossec/bin
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

创建一个 Perl 脚本来列出所有环境变量:

#!/usr/bin/perl -wT
print "Content-type: text/html\n\n";

foreach $key (sort keys(%ENV)) {
  print "$key = $ENV{$key}<p>";
}

将其放入/var/www/cgi-bin,并检查http://domain.com/cgi-bin/env.cgi,您将看到以下内容:

PATH = /sbin:/usr/sbin:/bin:/usr/bin:/var/ossec/bin

相关内容