PHP: 设置 memory_limit > 1024M 无法工作

由于一些不好的原因,我需要为一个目录设置大于1GB 的 内存限制,但是在我的 PHP 5.2.17上,当我使用 Debian 5.0(Lenny)服务器时,例如,2048M,我只得到 Php.ini默认值(256M)。

PHP 作为 Apache 模块运行,Phpinfo提供了(针对目录) :

memory_limit    1024M    256M
suhosin.memory_limit    0    0

Apache 模块或 PHP 配置是否存在限制?我知道服务器只有4GB 的内存。只是个特别的剧本。

412109 次浏览

你是如何设置内存限制的?Phpinfo ()显示当前 PHP 保留内存限制,这是可用的,因为 Php.ini将其设置为内存限制。

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

php_value memory_limit 2048M

因为设置 PHP 值的 . htaccess命令可能被关闭。然后您还可以尝试从 PHP 代码:

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

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

正如在 < a href = “ http://www.harded-php.net/suhosin/Configuration ation.html # suhosin.memory _ limit”rel = “ nofollow noReferrer”> Hardered-PHP-Configuration 中所描述的,苏霍辛不会让你 设置一个大于脚本开始时的值

如果将 Memory _ limit设置为 2048M,那么就可以增加内存使用量。

我有同样的问题,我需要我的 PHP 脚本使用4 GB 的内存。原因并不重要。目标是在 PHP 中设置4GB 的限制。

最初的想法是使用 ini_set('memory_limit', '4096M');,但我发现这不起作用。说实话,我不知道该怎么做,也不知道为什么,但那对我当时来说并不重要。我在一个有32GB 内存的系统上,这是有可能的。

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

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

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

ini_set("memory_limit",-1);

这通常会消除限制

限制

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

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

我今天使用这个解决方案解决了 内存限制的一个问题。

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