在PHP中,测试是否定义了Apache变量(与.htaccess中的IfDefine相同)

在PHP中,测试是否定义了Apache变量(与.htaccess中的IfDefine相同),php,apache,.htaccess,variables,environment-variables,Php,Apache,.htaccess,Variables,Environment Variables,如何从PHP测试是否定义了Apache变量?在.htaccess中,使用IfDefine进行测试 启动Apache时,我定义了一个变量:在Windows中使用 httpd.exe -D "MYVARIABLE" -w -n "Apache2.2" -k start 在Ubuntu中添加到/etc/apache2/envvars: export APACHE_ARGUMENTS='-D MYVARIABLE' 现在我可以在.htaccess中使用它 <IfDefine MYVARIABL

如何从PHP测试是否定义了Apache变量?在
.htaccess
中,使用IfDefine进行测试

启动Apache时,我定义了一个变量:在Windows中使用

httpd.exe -D "MYVARIABLE" -w -n "Apache2.2" -k start
在Ubuntu中添加到
/etc/apache2/envvars

export APACHE_ARGUMENTS='-D MYVARIABLE'
现在我可以在
.htaccess
中使用它

<IfDefine MYVARIABLE>
    do stuff
</IfDefine>
export APACHE_ARGUMENTS='-D MYVARIABLE'
但它总是返回
FALSE

phpinfo ();

打印很多内容,但在其输出中没有字符串
MYVARIABLE

多亏了mario的评论,我认为答案是:

  • 在Windows上,如果将变量设置为命令行参数,则可能无法使用,例如

    httpd.exe -D "MYVARIABLE" -w -n "Apache2.2" -k start
    
  • 在Linux/Ubuntu上,如果在
    /etc/apache2/envvars
    中设置为

    <IfDefine MYVARIABLE>
        do stuff
    </IfDefine>
    
    export APACHE_ARGUMENTS='-D MYVARIABLE'
    
    然后从PHP

    $x = getenv ('APACHE_ARGUMENTS')
    
    给出
    -D MYVARIABLE
    ,从中可以使用
    strstr($x,'MYVARIABLE')
    或其他方法查找变量

指令名称定义(
-D
)不会隐式成为环境变量。使用
/etc/apache2/envvars
SetEnv
进行此操作。