命令行上的PHP显示“Out of Memory”

时间:2012-03-12 10:14:38

标签: php command-line-interface out-of-memory

当脚本中的内存不足时,这不是正常的致命错误,因为它没有提供文件名,行号或使用的内存量。每当我尝试在命令行上运行php时,它只是说“内存不足”,或者当你传递一个脚本或者只是自己运行php时。即使尝试运行不存在的脚本也会发出相同的消息。

换句话说,我明白了:

dan@server [~]# php
Out of memory
dan@server [~]# php test.php
Out of memory
dan@server [~]# php doesntexist.php
Out of memory
dan@server [~]# php -v
Out of memory

然而,通过Apache的PHP工作非常好。只是在CLI上我才收到此错误。

有问题的机器正在运行CentOS 5.7版(最终版)和PHP 5.3.10版。

编辑:我刚刚尝试以root身份运行ulimit -a,这是输出:

core file size          (blocks, -c) 1000000
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 37888
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 4096
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14335
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1 个答案:

答案 0 :(得分:2)

这不是PHP失败,但内核阻止您使用过多内存的进程。使用ulimit -a查看已设置的限制。然后你可以增加它们,因为你是root。

好的,那不是它。 Attemtp#2:使用free -m查看剩余的内存量。另一个过程可能是吃太多了,我们将通过使用free确保这是问题。