【发布时间】:2019-07-31 09:25:51
【问题描述】:
我正在尝试根据 PHP 是否在 .htaccess 文件中作为 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()"> 部分有关。
我在安装了 apache 2.4.7 的 ubuntu 14.04 上运行 php 7.2.13。
我还可以补充一点,我是将 PHP 作为 apache 模块运行。
【问题讨论】:
-
@manny - 如果您查看上面的内容,您会发现它几乎相同,但仍然无法正常工作,因此在这种情况下链接没有帮助 =)
-
希望你注意到这一点......这些指令需要与 .user.ini 中的指令同步:我的意思是你是否在 .ini 文件中设置了这个“memory_limit 1024M”?
-
确实不需要需要与
.user.ini文件中的同步,据我所知.user.ini文件只有在@987654334中运行php时才会使用@ 模式,我没有。您还可以在我的问题中看到,如果我直接从<IfVersion>部分中设置 php 设置,它确实有效。
标签: php .htaccess environment-variables apache2