我在增加 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。
我在增加 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
也尝试在not Apache中编辑此值。php.ini
我建议您从错误的角度看待问题。问题应该是“我在做什么,需要通过 apache 模块使用 Php 在 apache 进程中使用 2G 内存,这个工具集是否最适合这项工作?”
是的,您可以将火箭绑在福特 pinto 上,但这可能不是正确的解决方案。
无论如何,如果你真的需要它,我会提供火箭......你可以添加到脚本的顶部。
ini_set('memory_limit','2048M');
这将为脚本设置它。您仍然需要告诉 apache 允许这么多的 php 脚本(我认为)。
-1
对于在memory_limit
变量中设置的无限内存限制:
ini_set('memory_limit', '-1');
您应该在支持 64 位操作系统、64 位 Apache 版本和 PHP 相同的硬件上安装 64 位操作系统。但这并不能保证与 PDF 一起使用的函数可以使用如此大的内存。您最好不要将整个文件加载到内存中,将其拆分为块或使用文件函数在不加载到 RAM 的情况下对其进行搜索。
对于遇到同样问题的其他人,这里是 php + 补丁中的错误描述 https://bugs.php.net/bug.php?id=44522
在您的 Apache 配置中输入以下内容:
php_value memory_limit 2048M
你也可以试试这个:
ini_set("max_execution_time", "-1");
ini_set("memory_limit", "-1");
ignore_user_abort(true);
set_time_limit(0);
即使ini_set("memory_limit", "-1");
设置了命令行 php,我也遇到了同样的问题,所以限制在 php 中,而不是来自 apache。
您应该检查您是否使用的是 64 位版本的 php。
查看有关检查代码是否在 64 位 PHP 上运行的问题,以了解您正在使用什么 php。
我认为你的 php 是用 32 位编译的。