6

出于某种原因,我的一个 php 脚本忽略了 php.ini 内存限制或 ini_set。

当我执行 print_r(ini_get_all) 时,它显示全局内存限制设置为 100M(以及本地),当我的脚本死于致命错误时:内存不足(分配 24714304)(试图分配 571 字节)

有关诊断此问题的任何提示?服务器有 8gigs 的内存,之前运行这个脚本从来没有遇到过问题。

关于调试的任何提示?

谢谢!

4

3 回答 3

5

最常见的一个原因是 CLI PHP 二进制文件使用的 php.ini 文件通常与您预期的不同。这可能是由用户权限引起的,或者只是安装的 PHP 版本的默认 php.ini 文件不同。但是,听起来您已经对其进行了一些分析,并且您的内存限制在您的脚本中可能是正确的。

在这种情况下,很可能您的操作系统对进程施加了硬内存限制,在这种情况下,您必须弄清楚强加来自哪里。

我建议看一下这个帖子,因为那张海报的经历与你的情况非常相似。

于 2009-12-30T20:58:42.573 回答
5

我的进程的虚拟内存受到硬限制(数量太少)。

从 bash shell 我这样做了:

ulimit -v(memory_in_bytes,无括号)

这解决了我的问题。上帝我爱stackoverflow

于 2009-12-30T21:16:06.730 回答
0

短暂而甜蜜

ini_set('memory_limit', -1);

如果您想跳过调试

于 2009-12-30T21:01:50.053 回答