使用环境变量和If语句

时间:2014-11-18 10:42:49

标签: apache .htaccess environment-variables

我想知道是否可以使用带有if语句的环境变量(或类似)来打开和关闭某些内容,例如display_errors,modpagespeed。

例如:

SetEnv DISPLAY_ERRORS on

<If "DISPLAY_ERRORS == on">
    php_flag display_errors on
</If>
<If "DISPLAY_ERRORS == off">
    php_flag display_errors off
</If>

我花了很长时间寻找这样的东西,但我无法发现任何这样做的东西。这甚至可能吗?

我正在寻找一种使用PHP编辑htaccess的简单方法,但不是将块写入htaccess,而是更容易改变&#34; on&#34;和&#34;关&#34;值,并且还可以更容易地将其显示为我的应用程序中的单选按钮。

1 个答案:

答案 0 :(得分:5)

我们很想写这个:

#SetEnvIf Request_URI "^" DISPLAY_ERRORS=off
SetEnv DISPLAY_ERRORS off

<If "-T env('DISPLAY_ERRORS')">
    php_flag display_errors off
</If>
<Else>
    php_flag display_errors on
</Else>

但似乎<If>在任何SetEnv(If)之前评估

  

请注意,变量的值可能取决于评估它的请求处理的阶段。例如,在完成身份验证之前评估<If >指令中使用的表达式

我想到的另一种工作方法是:

<IfDefine DISPLAY_ERRORS>
    php_flag display_errors on
</IfDefine>
<IfDefine !DISPLAY_ERRORS>
    php_flag display_errors off
</IfDefine>

使用-DDISPLAY_ERRORS参数启动Apache以显示错误,或者对于Apache&gt; = 2.4,在虚拟主机配置中添加Define DISPLAY_ERRORS