我知道有一种方法可以在.htaccess
文件中设置PHP内存限制:
<IfModule mod_php5.c>
php_value memory_limit 1024M
</IfModule>
或使用mod_php7.c
代替mod_php5.c
,如果运行PHP7,而不是PHP5。
但是是否有一种方法(一些条件指令)只有在全局配置中设置的原始memory_limit
低于.htaccess
值时才能做到这一点?即确保.htaccess
文件中的条目总是增加,而不是减少限制?
不,这是不可能的。但是,您可以做的是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文件中可用,因此要小心。