内存耗尽(最小脚本)

d3L*_*d3L 9 php

这是我以前从未发生过的事情。

我收到了,Allowed memory size of X bytes exhausted但是我的脚本几乎不占用任何内存。

我用最小的代码创建了一个小的测试脚本,但是它仍然失败!

$ cat x.php
#!/usr/bin/env php
<?php

function ha($msg) {

}

ha("Hi");

Run Code Online (Sandbox Code Playgroud)
$ ./x.php

Fatal error: Allowed memory size of 62914560 bytes exhausted (tried to allocate 1081028648 bytes) in x.php on line 4
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果删除该$msg函数的参数,则不会发出警告。如前所述,我从未发生过这种情况。这php.ini也是正常的。

系统信息

$ php -v
PHP 5.6.19 (cli) (built: Jun 22 2016 20:13:44)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
$ php -m
[PHP Modules]
bcmath
calendar
Core
ctype
date
dom
ereg
exif
filter
gd
hash
json
libxml
mbstring
openssl
pcntl
pcre
PDO
pdo_sqlite
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]
Run Code Online (Sandbox Code Playgroud)
$ df -h
Filesystem                Size      Used Available Use% Mounted on
ubi0:rootfs             362.9M    122.2M    240.7M  34% /
tmpfs                    40.0K         0     40.0K   0% /mnt/.splash
none                      1.0M    116.0K    908.0K  11% /dev
/dev/sda1                56.8G      5.4G     48.5G  10% /media/sda1
tmpfs                    50.0M     72.0K     49.9M   0% /var/volatile
tmpfs                   123.9M         0    123.9M   0% /dev/shm
tmpfs                    20.0M         0     20.0M   0% /media/ram
Run Code Online (Sandbox Code Playgroud)
$ cat /proc/meminfo
MemTotal:         253712 kB
MemFree:          179720 kB
Run Code Online (Sandbox Code Playgroud)

d3L*_*d3L 2

哇我没想到我真的会遇到这样的事情。

发生这种情况的原因是因为二进制文件中的一点(!!)被翻转了。

我用新的二进制文件替换了二进制文件,它又工作了。

这是两个二进制文件的区别:

在此输入图像描述