【问题标题】:Use Environment Variables with If Statements将环境变量与 If 语句一起使用
【发布时间】:2015-01-15 12:32:23
【问题描述】:

我想知道是否有一种方法可以使用带有 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】:

我们可能会想这样写:

#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>

但似乎 &lt;If&gt; 在任何SetEnv(If) 之前之前被评估。

请注意,变量的值可能取决于对其求值的请求处理阶段。例如,&lt;If &gt; 指令中使用的表达式在身份验证完成之前进行评估

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

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

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

【讨论】:

  • 我实际上查看了您提供的第二个选项,但这需要在 Apache 启动时设置 Envs,这对我的应用程序来说是不可能的。
  • 只是一个想法:或者您需要使用环境变量以外的其他东西。也许是一个文件 (something like this)。
猜你喜欢
  • 2012-07-01
  • 2018-07-31
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
相关资源
最近更新 更多