命令行上的PHP显示“;内存不足”;


PHP on command line displays "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

然而,PHP通过Apache运行得非常好。我只是在CLI上得到了这个错误。

该机器运行的是CentOS 5.7版(Final)和PHP 5.3.10。

编辑:我刚刚尝试按照建议将ulimit-a作为root运行,这是输出:

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

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

好吧,不是这样。第二步:用free -m看看你还有多少内存。另一个过程可能是吃得太多,我们将通过使用free来确保这是问题所在。