如何增加PHP超过2GB的内存限制?

时间:2012-08-09 14:01:45

标签: php memory-limit

我有一个问题是增加PHP作为Apache模块的内存限制。

如果我在Apache配置中放入以下指令,则可以正常工作:

php_value memory_limit 1.99G

但超过2GB不起作用,它会将此值恢复为128MB。

这是什么问题?对于一些PDF相关的任务,我需要更多的记忆。

服务器是Debian 2.6.32-5-amd64#1 SMP,PHP 5.3.3-7 + squeeze13,带有12GB物理RAM。

8 个答案:

答案 0 :(得分:42)

您是否尝试过以MB为单位的值?

php_value memory_limit 2048M

还可以在php.ini而非 Apache 中尝试编辑此值

答案 1 :(得分:34)

我建议你在错误的视线中看问题。任务应该是'我正在做什么,需要使用Php通过apache模块进行apache进程内的2G内存,这个工具集最适合这个工作吗?'

是的,你可以将火箭绑在福特针脚上,但它可能不是正确的解决方案。

无论如何,如果你真的需要它,我会提供火箭......你可以添加到脚本的顶部。

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

这将仅为脚本设置它。你仍然需要告诉apache为PHP脚本提供那么多(我认为)。

答案 2 :(得分:17)

对于-1变量中的无限内存限制集memory_limit

ini_set('memory_limit', '-1');

答案 3 :(得分:3)

您应该在支持64位操作系统,64位Apache版本的硬件上使用64位操作系统,而对于PHP则相同。但这并不能保证使用PDF的函数可以使用如此大的内存。您最好不要将整个文件加载到内存中,将其拆分为块或使用文件函数进行搜索而不加载到RAM中。

答案 4 :(得分:2)

对于遇到相同问题的其他人,这里是php + patch中的错误描述 https://bugs.php.net/bug.php?id=44522

答案 5 :(得分:1)

在Apache配置中输入以下内容:

php_value memory_limit 2048M

答案 6 :(得分:0)

您也可以尝试以下方法:

ini_set("max_execution_time", "-1");
ini_set("memory_limit", "-1");
ignore_user_abort(true);
set_time_limit(0);

答案 7 :(得分:0)

即使设置了ini_set("memory_limit", "-1");,我在命令行php上也遇到了同样的问题,所以限制在php中而不是来自Apache。

您应该检查您是否正在使用64位版本的php。

看看有关Checking if code is running on 64-bit PHP的问题,以了解您使用的是什么php。

我认为您的php是32位编译的。