设置 Apache2 PATH 环境变量

13 apache-2.2

你如何PATH为Apache2设置环境变量?我试过/usr/sbin/envvars在 httpd.conf 中设置它SetEnv PATH(并使用 PassEnv 将它传递给 SSI),但它只是没有被执行。

Ste*_*ski 15

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

此环境变量文件必须来自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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 为了查看变量,我使用了Perl printenv.cgi 脚本,并在http://example.org/cgi-bin/printenv.cgi 上提供了它。该脚本向我显示了以下路径:

    PATH = /usr/local/bin:/usr/bin:/bin
    
    Run Code Online (Sandbox Code Playgroud)
  3. 要更改这些变量,我编辑了 envvars 文件:

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

    export PATH=$PATH:/opt/local/bin
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重启apache

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

    PATH = /usr/local/bin:/usr/bin:/bin:/opt/local/bin
    
    Run Code Online (Sandbox Code Playgroud)

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


Den*_*son 2

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