使用环境变量和If语句

问题描述 投票:4回答:1

我想知道是否有一种方法可以使用带有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,而是更容易更改“on”和“off”值,并且还可以更容易地将其显示为单选按钮在我的申请中。

apache .htaccess environment-variables
1个回答
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> = 2.4,在virtualhost配置中添加Define DISPLAY_ERRORS

© www.soinside.com 2019 - 2024. All rights reserved.