PHP:设置memory_limits >1024M不起作用

2022-08-30 08:43:08

出于不好的原因,我需要为目录设置高于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。这只是一个特殊的脚本。


答案 1

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

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

php_value memory_limit 2048M

由于可能关闭了用于设置 PHP 值的 .htaccess 命令。然后,您也可以从PHP代码中尝试此操作:

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

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


答案 2

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

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

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

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

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


推荐