wordpress致命错误:允许的内存大小(奇怪)

时间:2018-07-07 14:53:55

标签: php wordpress wampserver

今天,当我尝试在本地编辑网站时,出现了这样的奇怪错误:

  

严重错误:耗尽的268435456字节的允许内存大小(尝试   分配6874029536211531203字节)   D:\ wamp64ario \ www \ owjgraph \ wp-includes \ functions.php在5231行上

为什么它试图分配6874029536211531203?

有时候,当我尝试访问登录页面时会收到此消息,有时是在不同情况下,例如仪表板或更新帖子等。

我尝试了很多事情但没有成功:

  1. 我在本地的其他网站(没有插件或各种插件)遇到相同的错误。
  2. 在WAMP中将memory_limit增加到256、512或1GB,但没有成功。
  3. 我听说4.9.7版存在一些内存泄漏错误,因此我降级为旧版本,问题仍然存在。
  4. 卸载并重新安装WAMP。
  5. 安装其他本地工具,例如MAMP。
  6. 清除缓存和cookie,并使用其他浏览器
  7. 安装新的WordPress 4.9.7、4.9.5和4.9.1

他们都没有解决我的问题,我真的很困惑。

我的Windows或注册表有问题吗?如何调试或跟踪此问题的出处?

2 个答案:

答案 0 :(得分:0)

尝试:查看您的错误日志,您可能会得到一条跟踪,该跟踪将为您自动解决问题(如无限循环)。

找到引发错误的行并确定是否可以重构该行以避免内存使用。

您可以在wp-config中覆盖php的内存分配,如下所示: define( 'WP_MAX_MEMORY_LIMIT' , '512M' );,但我认为这只是创可贴。可能有问题,您需要对其进行修复以确保应用程序的长期健康。

答案 1 :(得分:0)

我也发生了同样的事情。如果我使用var_dump stream_get_wrappers(),则会得到很长的乱码,结果很奇怪。我认为这是WAMP的错,因为我在纯PHP中也遇到了此错误。 WordPress的临时解决方案:

打开wordpress / wp-includes / functions.php并修改wp_is_stream函数,如下所示:

function wp_is_stream( $path ) {
    $wrappers = stream_get_wrappers();

    for ($i=0;$i<count($wrappers);$i++) {

        if (strlen($wrappers[$i])>100) {
            unset($wrappers[$i]);
        }
    }

    $wrappers_re = '(' . join('|', $wrappers) . ')';

    return preg_match( "!^$wrappers_re://!", $path ) === 1;
}

我使用WampServer 3.0.6 64bit