PHP致命错误:允许的内存大小268435456字节已用完(试图分配XX字节)


PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate XX bytes)

最初,它是在128MB的设置中声明的,然后我得到了这个错误,我认为可能没有足够的内存,然后我增加到256MB,但错误仍然存在。

代码中出现此错误的字符串:

function clean($str) {
$clean_str = stripslashes (trim($str));
return $clean_str;
}
// clean slashes
foreach($result[$i] as $key=>$value) {
 if($key=="currency") continue;
 $result[$i][$key] = clean($result[$i][$key]);
}

为什么会发生这种情况?

修改您的php.ini以将memory_limit增加到比您当前提供的更高的值–512MB对于现代应用程序来说并不罕见。

256MB(目前的默认值,以及268435456字节的大小)对于一个脚本来说是一个很大的内存,所以如果你超过了它,首先要检查的是几个场景:

无限循环将耗尽内存限制:

var $storage = null;
while(true){
  $storage += 'infinity!'; // Or something even more resource requiring.
}

或者,如果您从数据库中提取数据,并且意外地从包含大量数据的表中提取了太多数据,并且sql语句中没有限制,则可能会耗尽php脚本内存:

select * from users where true; // On a million-row table, this could do it.

因此,一般来说,这条消息是关于脚本耗尽内存的,但它通常不是一个提高限制的调用,而是一个找出脚本行为不端原因的调用。

大约一天半前,当我试图激活插件时,我的错误日志中突然出现了这些错误。导致屏幕出现空白/白色。

"mod_fcgid:stderr:PHP致命错误:在第1329行的wp-content/plugins/w3 total cache/lib/w3/ConfigKeys.PHP中,允许的内存大小为268435456字节(试图分配491520字节)"

"mod_fcgid:stderr:PHP致命错误:在第1329行的wp-content/plugins/w3 total cache/lib/w3/ConfigKeys.PHP中,允许的内存大小为268435456字节(试图分配491520字节)"

在php.ini或.htaccess中增加memory_limit并没有解决我的问题。我不得不进入域的php设置,并使用Plesk将安全模式选项从"默认"或"关闭"更改为"打开"。