apache获取环境变量值

apache获取环境变量值

我想获取环境变量的值并将其分配给 Apache 中的另一个变量。

$_SERVER['REMOTE_ADDR']例如,获取分配给的值$_SERVER['USER-IP']并覆盖$_SERVER['REMOTE_ADDR']127.0.0.1

我无法获取 REMOTE_ADDR 的值

<IfDefine !USER-IP>
  SetEnv USER-IP %{REMOTE_ADDR}
  SetEnv REMOTE_ADDR '127.0.0.1'
</IfDefine>

答案1

查看文档,$_SERVER['REMOTE_ADDR']var 严格来说不是一个环境变量,而是一个由 Web 服务器提供给 Cgi 上下文的 Cgi 请求元变量;http://www.faqs.org/rfcs/rfc3875.html

元变量包含从服务器传递到脚本的请求的数据

  meta-variable-name = "AUTH_TYPE" | "CONTENT_LENGTH" |
                       "CONTENT_TYPE" | "GATEWAY_INTERFACE" |
                       "PATH_INFO" | "PATH_TRANSLATED" |
                       "QUERY_STRING" | "REMOTE_ADDR" |
                       "REMOTE_HOST" | "REMOTE_IDENT" |
                       "REMOTE_USER" | "REQUEST_METHOD" |
                       "SCRIPT_NAME" | "SERVER_NAME" |
                       "SERVER_PORT" | "SERVER_PROTOCOL" |
                       "SERVER_SOFTWARE" | scheme |

apache 文档指出这些变量不能使用标准SetEnv样式指令覆盖

一些警告

无法使用环境操作指令覆盖或更改标准 CGI 变量。
https://httpd.apache.org/docs/2.4/env.html#setting

所以我认为你不太可能从 apache conf 轻松设置这些值

设置环境变量

(来自现有的服务器变量)

<Directory /var/www/server111>
    Order allow,deny
    Allow from all

    # This syntax works, as you can see from the image below...
    RewriteEngine On
    RewriteRule .* - [E=USER-IP:%{REMOTE_ADDR}]

    # none of these syntax seem to work
    SetEnv USERIP %{REMOTE_ADDR}
    SetEnv USERIP2 blah
    SetEnv USERIP3 ${REMOTE_ADDR}
    SetEnv USERIP6 %{ENV:REMOTE_ADDR}
</Directory> 

在此处输入图片描述

相关内容