如何将 PHP 的内存限制增加到 2GB 以上


How to increase memory limit for PHP over 2GB?

我在增加 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。

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

php_value memory_limit 2048M

此外,请尝试在php.ini而不是 Apache编辑此值

我建议你以错误的方式看待这个问题。 任务应该是"我在做什么,通过 apache 模块在 Php 的 apache 进程中需要 2G 内存,这个工具集最适合这项工作吗?

是的,您可以将火箭绑在福特平托上,但这可能不是正确的解决方案。

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

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

这将仅针对脚本设置它。 你仍然需要告诉 apache 允许 php 脚本这么多(我认为)。

对于在变量中设置-1 memory_limit无限内存限制:

ini_set('memory_limit', '-1');
您应该在支持 64 位操作系统、64 位

Apache 版本以及 PHP 的硬件上拥有 64 位操作系统。但这并不能保证处理PDF的函数可以使用如此大的内存。您最好不要将整个文件加载到内存中,将其拆分为块或使用文件函数在不加载到 RAM 的情况下对其进行查找。

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

你也可以试试这个:

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

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

php_value memory_limit 2048M
即使

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

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

看看这个关于检查代码是否在 64 位 PHP 上运行的问题,找出你正在使用的 php。

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