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

时间:2016-08-09 22:49:25

标签: php apache .htaccess

我知道可以通过这种方式在//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- 文件中设置PHP内存限制:

.htaccess

或使用<IfModule mod_php5.c> php_value memory_limit 1024M </IfModule> 代替mod_php7.c,如果运行PHP7,而不是PHP5。

但是,如果全局配置中设置的原始mod_php5.c低于memory_limit值,是否有办法(某些条件指令)才能执行此操作?即确保.htaccess文件中的条目总是增加,而不是减少限制?

1 个答案:

答案 0 :(得分:1)

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

<强> raise_memory_limit.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');
}

<强>的.htaccess

php_value auto_prepend_file "./raise_memory_limit.php"

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