.htaccess仅当全局内存较低时才增加PHP内存限制

.htaccess仅当全局内存较低时才增加PHP内存限制,php,apache,.htaccess,Php,Apache,.htaccess,我知道有一种方法可以在.htaccess文件中设置PHP内存限制,方法如下: <IfModule mod_php5.c> php_value memory_limit 1024M </IfModule> php_值内存_限制1024M 或者如果运行php7而不是php5,则在那里使用mod_php7.c而不是mod_php5.c 但是,只有在全局配置中设置的原始内存限制低于.htaccess值时,才有办法(某些条件指令)这样做吗?也就是说,确保.htacce

我知道有一种方法可以在
.htaccess
文件中设置PHP内存限制,方法如下:

<IfModule mod_php5.c>
    php_value memory_limit 1024M
</IfModule>

php_值内存_限制1024M
或者如果运行php7而不是php5,则在那里使用
mod_php7.c
而不是
mod_php5.c

但是,只有在全局配置中设置的原始
内存限制
低于
.htaccess
值时,才有办法(某些条件指令)这样做吗?也就是说,确保
.htaccess
文件中的条目始终增加,而不是减少限制?

否,这是不可能(直接)实现的。但是,您可以做的是一个PHP文件,它可以满足您的需要。您可以在
.htaccess
文件中指定此文件,并将其添加到任何PHP文件中:

提高内存限制。php:
// return_bytes() function directly taken from http://php.net/ini_get
function return_bytes($val) {
  $val = trim($val);
  $last = strtolower($val[strlen($val)-1]);
  switch($last) {
      // The 'G' modifier is available since PHP 5.1.0
      case 'g':
          $val *= 1024;
      case 'm':
          $val *= 1024;
      case 'k':
          $val *= 1024;
  }

  return $val;
}

if (return_bytes(ini_get('memory_limit')) < 1024 * 1024 * 1024) {
    ini_set('memory_limit', '1024M');
}

这样,您不必接触任何PHP文件,并且仍然能够在应用程序运行之前执行PHP代码。请注意,您在此处指定的任何全局变量和函数都将在所有PHP文件中可用,因此请注意。

这似乎有些疯狂,这里的用户案例是什么?我们的想法是在存储库中包含一个.htaccess文件,其中包含一个应用程序,供本地环境中的不同用户使用,并确保具有较低内存限制的用户可以在不干扰其配置的情况下增加该应用程序,而具有更好硬件的用户可以设置甚至更高的限制也不需要注释掉这行代码。您可以在安装脚本中使用php编写.htaccess。并不是说我真的喜欢这个想法,它是一个很容易应用的解决方案,并且完全符合我的需要。谢谢
php_value auto_prepend_file "./raise_memory_limit.php"