如何将PHP的内存限制提高到2GB以上?

如何将PHP的内存限制提高到2GB以上?,php,memory-limit,Php,Memory Limit,我在增加PHP作为Apache模块的内存限制时遇到了一个问题 如果我在Apache配置中放入以下指令,则可以正常工作: php_value memory_limit 1.99G 但2GB以上的内存不起作用,需要将该值恢复到128MB 这里有什么问题?我需要更多的内存来完成一些与PDF相关的任务 服务器是Debian 2.6.32-5-amd64#1 SMP,PHP5.3.3-7+squeeze13,带有12GB物理RAM。在Apache配置中输入以下内容: php_value memory_l

我在增加PHP作为Apache模块的内存限制时遇到了一个问题

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

php_value memory_limit 1.99G
但2GB以上的内存不起作用,需要将该值恢复到128MB

这里有什么问题?我需要更多的内存来完成一些与PDF相关的任务


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

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

php_value memory_limit 2048M

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

php_value memory_limit 2048M

另外,请尝试在
php.ini
notApache

中编辑此值。您应该在支持64位操作系统的硬件上安装64位操作系统,64位Apache版本以及相同的php版本。但这并不能保证与PDF一起使用的函数可以使用如此大的内存。您最好不要将整个文件加载到内存中,不要将其分割成块,也不要在不加载到RAM的情况下使用文件函数对其进行搜索。

我建议您从错误的角度看待问题。问题应该是“我在做什么,通过apache模块使用Php在apache进程中需要2G内存,这个工具集最适合这个工作吗?”

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

不管怎样,如果你真的需要,我会提供火箭。。。您可以添加到脚本的顶部

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

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

对于遇到相同问题的其他人,下面是php+补丁中的错误描述
对于
内存限制
变量中设置的无限内存限制
-1

ini_set('memory_limit', '-1');
您也可以尝试以下方法:

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

即使在
ini_集(“内存限制”,“-1”)的时候,我也有同样的命令行php问题已设置,因此限制是在php中而不是在apache中设置的

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

请看这个问题,了解您使用的是什么php



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

2G apache进程!哇,也许你应该将apache配置保留为默认设置,并设置
ini\u集('memory\u limit',-1)仅在您需要的文件上。看看这是否有效。使用MB代替GB不会改变任何东西。我觉得在Apache配置中可能还有其他一些限制。另外,据我所知,内存限制在运行时无法更改,默认值为128MB。也许我可以在main php.ini中设置,但我不希望其他VHOST有这么大的设置,所以我按VHOST使用它。@mikikg您不能将php设置绑定到虚拟主机。一旦一个apache进程完成了一个请求的服务,它就可以在任何虚拟主机的任何其他请求中自由使用。即使在命令行php和
ini_set(“memory_limit”,“-1”)
中,我也有同样的问题,所以我确信限制是在php中,而不是在apache中。也许32位max_intIt已经是64位了:Linux myHOST 2.6.32-5-amd64#1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64 GNU/LinuxApache是Debian推出的2.2.16-6+squeeze7版本。我认为它是64位编译的。我知道,脚本不是我的,它是一些html2pdf转换器,它的输入是非常大的HTML页面。正确的解决方案和正确的解释!我只使用了1个脚本(我的站点地图)就遇到了内存限制,它索引了太多的页面(存储在数据库中)。完美的解决方案,sitemap有很高的内存限制,其他一切都保持不变。不用说,但在你系上火箭之前,确保你把轮胎打好。有时候你需要一个火箭。自从过去7个小时超过我的站点所需的值以来,我一直处于进退两难的境地。所有的QA都被阻止了,我的项目经理很沮丧,我也很紧张。我本可以使用火箭,幸运的是我来到了这里,这个类比让我笑得很厉害,以至于我忘记了我为什么来到这里是的,它一定是在php.ini中。由于某些原因,在apache配置中,不要在2G以上工作(工作时没有其他较低值的问题)。嗨…实际上我正在使用zend,所以如何增加zendIs的内存这意味着,如果您有足够的可用RAM,PHP可以消耗的内存几乎没有限制?很高兴知道无限内存是可能的,但是,我想我不会很快在我的代码中使用它这件事是可行的,但在生产服务器上使用它是非常危险的,因为它可能会因为代码中的垃圾收集不当而导致内存消耗过高而导致整个服务器停机。