由于某种原因,我的一个PHP脚本忽略了php.ini内存限制或ini_set。
当我执行print_r(ini_get_all)时,它显示全局内存限制设置为100M(并且就此而言是本地的),当我的脚本死于致命错误时:内存不足(分配24714304)(试图分配571字节)
有关诊断的任何提示吗?服务器有8GB的内存,之前从未遇到过运行此脚本的问题。
有关调试的任何提示吗?
谢谢!
答案 0 :(得分:5)
最常见的原因是CLI PHP二进制文件通常使用的文件与您预期的不同。这可能是由user permissions引起的,或者只是安装的PHP版本的默认php.ini文件。但是,听起来你已经对它进行了一些描述,你的内存限制可能在你的脚本中是正确的。
在这种情况下,操作系统强加的进程很可能存在内存限制,在这种情况下,您必须确定拼版的来源。
我建议看一下this thread,因为那张海报经历了与你的情况非常相似的事情。
答案 1 :(得分:5)
我的进程的虚拟内存受到严格限制(数字太低)。
从bash shell我做到了:
ulimit -v(memory_in_bytes,没有括号)
这解决了我的问题。上帝,我喜欢stackoverflow
答案 2 :(得分:0)
ini_set('memory_limit', -1);
如果您想跳过调试