В настоящее время я разрабатываю плагин для Wordpress. Недавно у меня начались проблемы, когда я попытался открыть страницу веб-сайта в моей локальной установке. Всякий раз, когда я пытаюсь открыть его в новом окне Chrome в режиме инкогнито, я получаю ошибку 500. Удаление файлов cookie из обычного режима Chrome также вызывает проблему.
Журналы Apache показали, что я исчерпал максимальный лимит памяти. Установка ограничения на -1 приводит к бесконечной загрузке памяти, поэтому мне приходится вручную останавливать выполнение apache. Затем я включил xdebug и включил режим отладки. Насколько я понимаю, xdebug поставляется с максимальным пределом вложенности, так что это ошибка, которую я получаю сейчас. Стек вызовов показывает, что существует цикл вызовов функций.
Вот как это выглядит:
( ! ) Error: Maximum function nesting level of '256' reached, aborting! in /.../wp-includes/wp-db.php on line 2030
Call Stack
# Time Memory Function Location
1 0.0008 397344 {main}( ) .../index.php:0
2 0.0010 397632 require( '.../wp-blog-header.php' ) .../index.php:17
3 0.0011 397984 require_once( '.../wp-load.php' ) .../wp-blog-header.php:13
4 0.0044 411632 require_once( '.../wp-config.php' ) .../wp-load.php:37
5 0.0046 413160 require_once( '.../wp-settings.php' ) .../wp-config.php:101
6 0.9406 10171032 do_action( ) .../wp-settings.php:375
7 0.9406 10171408 WP_Hook->do_action( ) .../plugin.php:465
8 0.9406 10171408 WP_Hook->apply_filters( ) .../class-wp-hook.php:310
9 0.9474 10227816 Classic_Editor::init_actions( ) .../class-wp-hook.php:286
10 0.9482 10229208 Classic_Editor::get_settings( ) .../classic-editor.php:42
11 0.9482 10229208 get_option( ) .../classic-editor.php:233
12 0.9484 10229528 W3TC\DbCache_Wpdb->get_row( ) .../option.php:100
13 0.9484 10229528 W3TC\DbCache_Wpdb->query( ) .../wp-db.php:2501
14 0.9484 10229528 W3TC\DbCache_WpdbInjection_QueryCaching->query( ) .../DbCache_Wpdb.php:167
15 0.9486 10229616 W3TC\Cache_File->get( ) .../DbCache_WpdbInjection_QueryCaching.php:143
16 0.9486 10229616 W3TC\Cache_File->get_with_old( ) .../Cache_Base.php:96
17 0.9486 10229616 W3TC\Cache_File->_get_with_old_raw( ) .../Cache_File.php:136
18 0.9486 10230048 W3TC\Cache_File->_get_path( ) .../Cache_File.php:154
19 0.9487 10230048 wp_hash( ) .../Cache_File.php:312
20 0.9487 10230048 wp_salt( ) .../pluggable.php:2259
21 0.9487 10230984 get_site_option( ) .../pluggable.php:2223
22 0.9487 10230984 get_network_option( ) .../option.php:1137
23 0.9488 10231024 get_option( ) .../option.php:1272
24 0.9490 10231344 W3TC\DbCache_Wpdb->get_row( ) .../option.php:100
.
.
.
252 0.9577 10249328 W3TC\DbCache_Wpdb->prepare( ) .../option.php:100
253 0.9577 10252168 array_walk ( ) .../wp-db.php:1378
254 0.9577 10252192 W3TC\DbCache_Wpdb->escape_by_ref( ) .../wp-db.php:1378
255 0.9577 10252192 W3TC\DbCache_Wpdb->_real_escape( ) .../wp-db.php:1258
256 0.9577 10252232 W3TC\DbCache_Wpdb->add_placeholder_escape( )
Строки с 12 по 23 повторяются до строки 252.
Я попытался установить максимальный уровень вложенности на 5000, но предел всегда достигается.
Кроме того, поскольку журналы, похоже, подразумевают, что проблема связана с подключением W3 TC, я попытался отключить его. Проблема на некоторое время исчезла, и я смог получить доступ к сайту в режиме инкогнито, но через некоторое время снова появился. Очистка кеша с помощью W3 TC также временно решает проблему.
С этого момента я не знаю, что еще я могу попробовать. Как я могу навсегда решить эту проблему?
Может быть полезно увидеть трассировку отладки, когда проблема возникает с отключенным W3 TC.
@JamesHoux Проблема присутствовала как с включенным W3 TC, так и без него. Кроме того, трассировка всегда одинакова, даже если W3 TC отключен. Должен ли я попытаться полностью удалить папку плагина?
Это звучит очень подозрительно. Насколько я знаю, WordPress работает таким образом, что отключенный плагин не должен запускать какой-либо код. Я никогда не слышал о поведении, которое вы описываете. Вы можете попробовать удалить папку плагина W3 TC, чтобы посмотреть, что произойдет.
@JamesHoux Итак, я удалил полностью удаленный плагин W3 TC, следуя руководству это. Теперь все в порядке. Я до сих пор не знаю, как плагин работал даже после того, как я его отключил.
Рад, что вы решили это. Спасибо за продолжение. Это полезно знать.






Проблема, похоже, связана с плагином W3 TC. Полное удаление решило проблему для меня.
"...но затем снова всплыли на поверхность через некоторое время" Не могли бы вы пояснить? Проблема появилась до или после повторного включения плагина W3 TC?