Недавно я заметил, что на моем сайте WordPress я иногда получаю 500 Internal Server Error. Я проверил журналы, и у меня много строк:
[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');
И даже больше, но это не сработало. Независимо от того, что я установил, он все еще превышает пределы памяти на некоторые байты. Я думаю, что есть проблема с некоторыми запросами в базе данных, но как проверить, какой?
Содержимое 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 Security settings -> File Permissions (Настройка параметров) и проверьте, правильно ли установлены все разрешения. Как только вы исправляете разрешения, как они должны быть, вы больше не увидите эту ошибку.
Константа WP_MEMORY_LIMIT
регулирует ОЗУ для всех процессов PHP для WordPress для передней и WP_MEMORY_LIMIT
. Используйте это на общем хостинге. Константа WP_MAX_MEMORY_LIMIT
регулирует ОЗУ только для бэкэнд. Вы используете WP_MAX_MEMORY_LIMIT
когда знаете, что у вас достаточно ОЗУ, и можете использовать все это, например, на сервере VPS, которым вы управляете.
Вернуться к
define( 'WP_MAX_MEMORY_LIMIT' , '128M' ); define( 'WP_MEMORY_LIMIT' , '64M' );
и удалите те запросы, которые вы используете (см. выше), и посмотрите, возвращается ли сайт. Если это так, это проблема; работа над этими запросами – это другая проблема.
Если это общий хостинг, вы убиваете сервер этими запросами; если это ваш собственный сервер, вам нужно настроить MySQL / PHP для кеширования и больших нагрузок.
Отключите «Резервные копии базы данных» в iThemes Security для меня.