![](/img/trans.png)
[英]Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 5196452 bytes) in wp-includes\wp-db.php on line 1811
[英]WordPress Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 77 bytes) in wp-includes/wp-db.php on line 1832
我最近在我的 WordPress 網站上注意到我有時會收到 500 內部服務器錯誤。 我檢查了日志,我有很多行,例如:
[Mon Oct 03 01:25:24.357439 2016] [fcgid:warn] [pid 12840] [client 83.27.211.107:36968] mod_fcgid:stderr:PHP 致命錯誤:允許分配的內存大小為 536877709 字節 5368709在第 1832 行的 /var/www/vhosts/mywebsite/public_html/wp-includes/wp-db.php
我試圖增加內存限制:
定義('WP_MAX_MEMORY_LIMIT','512M');
定義('WP_MEMORY_LIMIT','512M');
甚至更多,但它沒有用。 無論我設置什么,它仍然超出了一些字節的內存限制。 我認為對數據庫的某些查詢有問題,但如何檢查哪個?
include/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;
}
問題是由 iThemes Security 插件引起的。 我關掉它,錯誤消失了。 如果我知道此插件的哪一部分導致超出內存限制,我將進一步調查此問題並編輯此答案。
我遇到了與“ wp-db.php on line 1832 ”相同的問題,並且禁用了之前提到的iThemes Security 插件對我來說效果很好。 但是,如果您仍然需要保護您的網站,這不是解決方案。
您需要做的是修復關鍵區域的目錄權限,例如 wp-content、wp-includes 等...
轉到iThemes 安全設置 ->文件權限(配置設置)並檢查所有權限是否設置正確。 一旦按預期修復權限,您就不會再看到該錯誤。
禁用 iThemes Security 中的“數據庫備份”對我有用。
常量WP_MEMORY_LIMIT
為前端和后端的 WordPress 的所有 PHP 進程調節 RAM。 在共享主機上使用它。 常量WP_MAX_MEMORY_LIMIT
調節后端的 RAM。 當您知道自己有足夠的 RAM 並且可以使用所有 RAM 時,您可以使用WP_MAX_MEMORY_LIMIT
,例如在您管理的 VPS 服務器上。
回到
define( 'WP_MAX_MEMORY_LIMIT' , '128M' ); define( 'WP_MEMORY_LIMIT' , '64M' );
並刪除您正在運行的那些查詢(如上),然后查看該站點是否恢復正常。 如果是這樣,那就是問題所在; 處理這些查詢是一個不同的問題。
如果這是共享主機,則您正在使用這些查詢殺死服務器; 如果這是您自己的服務器,則需要配置 MySQL/PHP 以進行緩存和高負載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.