设置并检查环境变量

时间:2019-03-09 14:55:09

标签: php .htaccess environment-variables apache2

我试图根据.htaccess文件中PHP是否作为apache模块运行来设置环境变量。我在php脚本中转储了$_SERVER数组,可以看到MOD_PHP变量已成功设置,但是reqenv()条件似乎总是返回false,因为ini_get('memory_limit');仍然报告默认值。

<IfModule mod_php5.c>
    SetEnv MOD_PHP php5
</IfModule>
<IfModule mod_php7.c>
    SetEnv MOD_PHP php7
</IfModule>
<IfVersion >= 2.4>
    <If "reqenv('MOD_PHP') != '' || reqenv('REDIRECT_MOD_PHP') != ''">
        php_value memory_limit 1024M
    </If>
</IfVersion>

不确定上述原因为何不起作用。如果我将php_value部分的右边的<IfVersion>移动,则该值将按预期进行修改:

<IfModule mod_php5.c>
    SetEnv MOD_PHP php5
</IfModule>
<IfModule mod_php7.c>
    SetEnv MOD_PHP php7
</IfModule>
<IfVersion >= 2.4>
# the following works
php_value memory_limit 1024M
</IfVersion>

因此,似乎与<If "reqenv()">部分有关。

我正在ubuntu 14.04上运行php 7.2.13,安装了apache 2.4.7。

我还可以补充一点,我 am 将PHP作为apache模块运行。

1 个答案:

答案 0 :(得分:0)

SetEnv在评估<if>之前发生得很晚。

SetEnvIf在评估<if>之前发生得更早。

如果要尽早设置每个请求的环境变量以使用<if>进行检查,请使用SetEnvIf。或者,如果该变量根本不是针对每个请求的,则使用真实的环境变量(例如,在与httpd一起分发的envvars文件中定义)。