我最近在我的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;
}
答案 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中的“数据库备份”安全功能。