当脚本内存不足时,这不是常见的致命错误,因为它没有给出文件名、行号或使用的内存量。每当我试图在命令行上运行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
来确保这是问题所在。