我最初发布于 https://stackoverflow.com/questions/9665189/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

但是通过Apache的PHP工作非常好.我只是在CLI上得到了这个错误.

有问题的机器运行的是CentOS版本5.7(最终版),它是64位和PHP 5.3.10.它是一个专用的服务器.

我尝试过运行ulimit -a,如同建议的那样,这是输出:

core file size          (blocks,-c) 200000
data seg size           (kbytes,-d) 200000
scheduling priority             (-e) 0
file size               (blocks,-f) unlimited
pending signals                 (-i) 37888
max locked memory       (kbytes,-l) 32
max memory size         (kbytes,-m) 200000
open files                      (-n) 100
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) 35
virtual memory          (kbytes,-v) 200000
file locks                      (-x) unlimited

root上的free -m给出了:

total       used       free     shared    buffers     cached
Mem:          3824       3714        110          0        142       2632
-/+ buffers/cache:        939       2885
Swap:         3490          0       3490

从顶部开始的内存使用情况:

Mem:   3916648k total,3797056k used,119592k free,145820k buffers
Swap:  3574452k total,168k used,3574284k free,2686844k cached

更新:昨天重新启动服务器,它在下午的剩余时间工作.然而,今天它正在做同样的事情.

运行“strace PHP test.PHP”(一个存在的文件),它会持续一段时间,但putty的最后一页左右是这样的:

fstat(3,{st_mode=S_IFREG|0644,st_size=100030,...}) = 0
mmap(NULL,100030,PROT_READ,MAP_PRIVATE,3,0) = 0x2ad3ce0af000
close(3)                                = 0
open("/lib64/libnss_dns.so.2",O_RDONLY) = 3
read(3,"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\17\0\0\0\0\0\0"...,832) = 832
fstat(3,{st_mode=S_IFREG|0755,st_size=23736,2113792,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,0) = -1 ENOMEM (Cannot allocate memory)
close(3)                                = 0
munmap(0x2ad3ce0af000,100030)          = 0
alarm(0)                                = 0
futex(0x3d80e07b20,FUTEX_WAKE_PRIVATE,2147483647) = 0
futex(0x3d80e079a0,2147483647) = 0
futex(0x3d7fe94760,2147483647) = 0
futex(0x3d7fe94c10,2147483647) = 0
stat("/etc/krb5.conf",st_size=608,...}) = 0
open("/proc/filesystems",O_RDONLY)     = 3
read(3,"nodev\tsysfs\nnodev\trootfs\nnodev\tb"...,4095) = 314
close(3)                                = 0
open("/etc/krb5.conf",O_RDONLY)        = 3
open("/proc/filesystems",O_RDONLY)     = 4
read(4,4095) = 314
close(4)                                = 0
access("/etc/krb5.conf",W_OK)          = -1 EACCES (Permission denied)
fstat(3,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x2ad3ce0af000
read(3,"[logging]\n default = FILE:/var/l"...,4096) = 608
read(3,"",4096)                       = 0
close(3)                                = 0
munmap(0x2ad3ce0af000,4096)            = 0
open("/dev/urandom",O_RDONLY)          = 3
fstat(3,{st_mode=S_IFCHR|0444,st_rdev=makedev(1,9),...}) = 0
read(3,"\300\260\36co\363cI\t\355\324\3518gy\354\357\314Z:",20) = 20
close(3)                                = 0
futex(0x3d7f624640,2147483647) = 0
open("/proc/filesystems",4095) = 314
close(3)                                = 0
open("/etc/krb5.keytab",O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/proc/filesystems",4095) = 314
close(3)                                = 0
futex(0x3d8122d0c0,2147483647) = 0
stat("/dev/urandom",...}) = 0
brk(0x340b000)                          = 0x340b000
brk(0x342c000)                          = 0x340b000
mmap(NULL,1048576,0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL,134217728,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_norESERVE,67108864,0) = -1 ENOMEM (Cannot allocate memory)
write(2,"Out of memory\n",14Out of memory
)         = 14
exit_group(1)                           = ?

编辑:按照sonassi的要求添加输出.

整个日志位于http://www.2shared.com/file/05MVRFI6/dmp.html

cat / proc / meminfo的输出:

MemTotal:      3916648 kB
MemFree:        501180 kB
Buffers:        335276 kB
Cached:        2312536 kB
SwapCached:          0 kB
Active:        1312888 kB
Inactive:      1702096 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      3916648 kB
LowFree:        501180 kB
SwapTotal:     3574452 kB
SwapFree:      3574292 kB
Dirty:             728 kB
Writeback:           0 kB
AnonPages:      367160 kB
Mapped:          33640 kB
Slab:           351564 kB
PageTables:      18588 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   5532776 kB
Committed_AS:  1188280 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    265828 kB
VmallocChunk: 34359471827 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

运行PHP test.PHP后cat / proc / meminfo的输出如下.我在这里替换了服务器的IP地址,因为它是公共IP – xxx.xxx.xxx.11是服务器的主IP,xxx.xxx.xxx.12是其他IP.

Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=3 ID=271 PROTO=UDP SPT=10170 DPT=33437 LEN=12
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=89.39.188.210 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=47199 DF PROTO=TCP SPT=2119 DPT=4899 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=89.39.188.210 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=47678 DF PROTO=TCP SPT=2119 DPT=4899 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=89.39.188.210 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=48675 DF PROTO=TCP SPT=2119 DPT=4899 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=16299 DF PROTO=TCP SPT=3185 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.12 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=16300 DF PROTO=TCP SPT=3186 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.12 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=17038 DF PROTO=TCP SPT=3186 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=17073 DF PROTO=TCP SPT=3185 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=188.254.224.225 DST=xxx.xxx.xxx.12 LEN=48 TOS=0x00 PREC=0x00 TTL=113 ID=39888 PROTO=TCP SPT=59828 DPT=5900 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=188.254.224.225 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=113 ID=43041 PROTO=TCP SPT=59828 DPT=5900 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=269 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=269 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=2 ID=270 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=2 ID=270 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=3 ID=271 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=3 ID=271 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=65.111.170.208 DST=xxx.xxx.xxx.11 LEN=444 TOS=0x00 PREC=0x00 TTL=52 ID=0 DF PROTO=UDP SPT=5105 DPT=5060 LEN=424
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=65.111.170.208 DST=xxx.xxx.xxx.12 LEN=443 TOS=0x00 PREC=0x00 TTL=52 ID=0 DF PROTO=UDP SPT=5105 DPT=5060 LEN=423
TCP: Treason uncloaked! Peer 82.129.64.220:5306/59348 shrinks window 3410313698:3410313754. Repaired.
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=223.203.192.53 DST=xxx.xxx.xxx.12 LEN=1500 TOS=0x00 PREC=0x00 TTL=47 ID=2742 PROTO=UDP SPT=0 DPT=0 LEN=44665

cat /etc/security/limits.conf显示我已经注释掉了所有内容:

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name,with @group Syntax
#        - the wildcard *,for default entry
#        - the wildcard %,can be also used with %group Syntax,#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - RSS - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max cpu time (MIN)
#        - nproc - max number of processes
#        - as - address space limit
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to
#        - rtprio - max realtime priority
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    RSS             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file

而cat /etc/sysctl.conf的输出:

# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values,0 is disabled,1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message,in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size,in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments,in pages
kernel.shmall = 4294967296

编辑:更新上面的ulimit以dan,而不是root运行.

重新阅读上面的评论和原始帖子后 – 你以root身份运行ulimit -a – 但你说root不受影响.

这里的问题是ulimit,但是在用户级别.以dan用户身份登录并运行ulimit -a,您可能会发现内存有限.

命令行上的PHP显示“Out of Memory”,没有文件名,行号或内存值的更多相关文章

  1. php – 如何将特殊字符转换为普通字符?

    我试图转换像下面的字符:对于普通字符,例如:做这个的最好方式是什么?我尝试过很多东西,比如preg_replace和str_replace.有人可以帮我吗?–编辑–我试过的是:试试这个……

  2. 正则表达式 – 在一个语句中用于多个替换的sed中的正则表达式

    我想清理一些输入,并用可接受的输入替换几个字符,例如一个丹麦语’’与’aa’。这很容易使用几个语句,例如//ae/,//aa/,//oe/,但是由于工具限制,我想要能够在单个正则表达式中执行此操作。我可以捕获所有相关案例,但是我更换不工作,因为我想要:就像这样,工具问题是我也想在SublimeText2snippet中使用相同的正则表达式。任何人都可以辨别出我的正则表达式语句有什么问题?将它分成几个sed语句,分隔开:

  3. 命令行上的PHP显示“Out of Memory”,没有文件名,行号或内存值

    我最初发布于https://stackoverflow.com/questions/9665189/php-on-command-line-displays-out-of-memory,但建议在此发布.当脚本中的内存不足时,这不是正常的致命错误,因为它没有提供文件名,行号或使用的内存量.每当我尝试在命令行上运行PHP时,它只是说“内存不足”,或者当你传递一个脚本或者只是自己运行PHP时.即使尝试运

  4. windows-server-2008 – 由于神秘的IP冲突,故障转移群集无法进行故障转移?

    我的故障转移群集遇到了一个神秘的问题,在故障转移群集管理–群集事件中我收到严重错误消息1135和1177:在进一步调查之后,我发现了一些有趣的错误,从PrintServer02上的事件查看器中记录的第一个严重错误消息:192.168.127.142–>PrintServer01的辅助IP怎么可能它被一个PrintServer01节点冲突?

  5. Match One of Many Characters (匹配多个字符中的一个)

    i)eg.(?i)[A-F0-9]

  6. 将Anglejs指令实现为Typescript中的类

    所以在看了一些在typedcript中的angularjs指令的例子中,似乎大多数人同意在实现它们时使用函数而不是类。我宁愿把他们当成一个班级,并试图按照下列方式实施:现在这很好。然而,我需要一个孤立的范围与一些属性,我正在努力寻找如何包括在类本身。逻辑决定了,因为我可以拥有我应该能够有这样的东西:但我不知道这是正确的还是从那里进行的。有谁知道如何解决这个问题?谢谢,假设您在没有异步范围的情况下工作,以下内容应与隔离范围配合使用:

  7. Javascript中的区分大小写的重音折叠

    你写了这段代码:我想如果回答我的问题,请.如果我想要大字符,那么我必须更改代码.非常感谢你!解决方法你可以这样做:重大变化:>正则表达式模式不区分大小写>如果匹配的字符为大写,则返回大写的字符变体

  8. Javascript:REGEX将所有相对Urls更改为Absolute

    我目前正在创建一个Node.js的webscraper/proxy,但是我无法解析源码脚本部分中发现的相对Urls,我认为REGEX会做的.虽然不知道我会如何实现这一点.有没有我可以去这个?

  9. 在Delphi中控制应用程序音量

    第二部分是什么是在XP上控制音量和切换静音的正确方法,这些接口不可用?解决方法使用此简单代码将其在我的机器上运行的主卷静音:

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部