我面临常见的“致命错误:内存不足(分配30408704)(试图分配24个字节)......”PHP致命错误。通过Apache提供的页面没有表现出这种行为。
我尝试了以下内容:
ini_set('memory_limit', -1)
,ini_set('memory_limit', '-1')
,ini_set('memory_limit', 100000000)
,ini_set('memory_limit', '128M')
等来增加脚本内的memory_limit unset()
不需要的数组和对象,以鼓励垃圾收集器释放内存。-c
命令行标志明确地包含一个php.ini文件来手动选择具有各种值的特定php.ini文件。无论我尝试什么,错误信息都是一样的。我的命令行脚本似乎忽略了对memory_limit
的更改。
我倾向于尝试确保我的脚本具有内存效率,但我目前需要通过Simple HTML DOM解析大量HTML,并且它在解析器中遇到了内存不足的问题。为了减少脚本的内存占用,我尝试使用DOMDocument代替。这也无济于事。实际上,现在在脚本的其他地方触发了内存不足错误。
我的问题:有没有人遇到过这个或类似的问题?你有什么建议吗?
谢谢。
答案 0 :(得分:7)
事实证明,问题是由在所有命令行脚本上设置硬内存限制的服务器上启用了shell fork炸弹保护引起的。这是我的网站主机在我不知情的情况下启用的。
答案 1 :(得分:3)
你在cli上的PHP可能正在使用不同的php.ini到你的apache php。尝试使用phpinfo()
并使用您认为使用的ini文件进行检查。