WordPress致命错误:在1832行的wp-includes / wp-db.php中,允许的内存大小为536870912字节(试图分配77个字节)

时间:2016-10-03 21:17:17

标签: php wordpress crash internal-server-error

我最近在我的WordPress网站上发现我有时会收到500内部服务器错误。我检查了日志,我有很多行,如:

  

[Mon Oct 03 01:25:24.357439 2016] [fcgid:warn] [pid 12840] [客户]   83.27.211.107:36968] mod_fcgid:stderr:PHP致命错误:允许的内存大小为536870912字节耗尽(试图分配77个字节)   在/var/www/vhosts/mywebsite/public_html/wp-includes/wp-db.php上线   1832

我试图增加内存限制:

  

define('WP_MAX_MEMORY_LIMIT','512M');

     

define('WP_MEMORY_LIMIT','512M');

甚至更多,但它没有用。无论我设置它仍然超过内存限制一些字节。我认为对数据库的一些查询存在问题,但是如何检查哪个?

includes / wp-db.php的内容:

} else {
    $num_rows = 0;
    if ( $this->use_mysqli && $this->result instanceof mysqli_result ) {
        while ( $row = mysqli_fetch_object( $this->result ) ) {
            $this->last_result[$num_rows] = $row;
            $num_rows++;
        }
    } elseif ( is_resource( $this->result ) ) {
        // server crashing at line below
        while ( $row = mysql_fetch_object( $this->result ) ) {
            $this->last_result[$num_rows] = $row;
            $num_rows++;
        }
    }

    // Log number of rows the query returned
    // and return number of rows selected
    $this->num_rows = $num_rows;
    $return_val     = $num_rows;
}

4 个答案:

答案 0 :(得分:1)

问题是由iThemes Security插件引起的。我关掉它,错误消失了。如果我知道这个插件的哪个部分导致超出内存限制,我会更多地研究这个问题并编辑这个答案。

答案 1 :(得分:1)

我在第1832行" wp-db.php上遇到了同样的问题"如上所述,禁用 iThemes安全插件对我来说效果很好。但是,如果您仍然需要保护您的网站,则不是解决方案。

您需要做的是修复关键区域的目录权限,例如wp-content,wp-includes等...

转到 iThemes安全设置 - > 文件权限(配置设置)并检查是否正确设置了所有权限。一旦您按照预期修复了权限,您就不会再看到该错误了。

答案 2 :(得分:0)

常量WP_MEMORY_LIMIT为前端和后端的WordPress的所有PHP进程调节RAM。在共享主机上使用此功能。常量WP_MAX_MEMORY_LIMIT仅调节后端的RAM。当您知道有足够的RAM且可以全部使用时,可以使用WP_MAX_MEMORY_LIMIT,例如在您管理的VPS服务器上。

返回

define( 'WP_MAX_MEMORY_LIMIT' , '128M' ); define( 'WP_MEMORY_LIMIT' , '64M' );

并删除您正在运行的查询(上图)并查看该网站是否重新启动。如果确实如此,那就是问题所在;处理这些查询是一个不同的问题。

如果这是共享主机,那么您将使用这些查询来终止服务器;如果这是您自己的服务器,则需要配置MySQL / PHP以进行缓存和高负载。

答案 3 :(得分:0)

禁用iThemes中的“数据库备份”安全功能。