我试图根据.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模块运行。
答案 0 :(得分:0)
SetEnv
在评估<if>
之前发生得很晚。
SetEnvIf
在评估<if>
之前发生得更早。
如果要尽早设置每个请求的环境变量以使用<if>
进行检查,请使用SetEnvIf。或者,如果该变量根本不是针对每个请求的,则使用真实的环境变量(例如,在与httpd一起分发的envvars
文件中定义)。