72

出于不好的原因,我需要为目录设置高于 1 GB 的memory_limits ,但是在我使用Debian 5.0 (Lenny) 服务器上的 PHP 5.2.17 时,例如 2048M,我只得到php.ini默认值( 256M)。

PHP 作为 Apache 模块运行,phpinfo为我们提供(对于目录):

memory_limit    1024M    256M
suhosin.memory_limit    0    0

Apache 模块或 PHP 配置是否存在限制?我知道服务器只有 4 GB 的 RAM。这只是一个特殊的脚本。

4

5 回答 5

130

您如何尝试设置内存限制?phpinfo() 显示当前 PHP 保留的内存限制,这是可用的,因为php.ini将其设置为内存限制。

如果您的服务器支持通过.htaccess设置 PHP 命令,则将其写入脚本目录中的 Apache .htaccess文件可能会起作用:

php_value memory_limit 2048M

因为用于设置 PHP 值的.htaccess命令可能已关闭。然后你也可以从 PHP 代码中试试这个:

ini_set('memory_limit', '2048M');

如果这不起作用并且.htaccess也不起作用,那么您需要联系服务器管理员。

于 2012-02-14T11:46:38.007 回答
35

我遇到了同样的问题,我需要我的 PHP 脚本来使用 4 GB 的 RAM。原因并不重要。目标是在 PHP 中设置 4 GB 的限制。

最初的想法是使用ini_set('memory_limit', '4096M');,但我发现这不起作用。我不知道如何或为什么要诚实,但这对当时的我来说并不重要。我在一个具有 32 GB 内存的系统上,它必须是可能的。

我发现将限制设置为少 1 MB 实际上是有效的,这是一个对我有用的解决方案。

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

实际上,我以前从未真正玩过它,但我在我的系统上注意到这个值似乎完全消除了我的所有内存限制。我可以使用我的系统可能提供的尽可能多的 RAM。

于 2015-11-01T17:44:26.713 回答
30
ini_set("memory_limit",-1);

这通常应该删除限制

于 2016-03-15T00:31:48.377 回答
6

Hardened-PHP-Configuration中所述,Suhosin不允许您设置大于脚本开始时的值

如果您将suhosin.memory_limit设置为2048M,那么您将能够增加内存使用量。

于 2013-05-31T10:05:27.510 回答
4

的极限

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

操作系统(OS)有关。对于 32 位操作系统,您必须使用此最大限制。

我今天使用此解决方法解决了memory_limit的问题。

使用更高的限制,PHP 有奇怪的行为。当一个类被实例化时,它会在一些公共非静态方法类中返回耗尽的内存,但在 __construct 方法中放置一个 die() (以测试问题)。

于 2020-04-01T09:45:22.577 回答