Ich entwickle gerade ein Plugging für WordPress. Vor kurzem hatte ich einige Probleme, als ich versuchte, eine Seite der Website in meiner lokalen Installation zu öffnen. Immer wenn ich versuche, es in einem neuen Chrome-Inkognito-Fenster zu öffnen, erhalte ich einen 500-Fehler. Auch das Löschen von Cookies aus dem normalen Chrome-Modus löst das Problem aus.
Apache-Protokolle zeigten, dass ich das maximale Speicherlimit ausgeschöpft habe. Das Festlegen des Limits auf -1 führt zu einer unendlichen Speicherlast, sodass ich die Apache-Ausführung manuell anhalten muss. Ich habe dann xdebug aktiviert und den Debug-Modus eingeschaltet. Soweit ich weiß, hat xdebug eine maximale Verschachtelungsgrenze, also bekomme ich jetzt diesen Fehler. Der Aufrufstapel zeigt, dass es eine Schleife von Funktionsaufrufen gibt.
So sieht es aus:
( ! ) 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( )
Die Zeilen 12 bis 23 wiederholen sich bis Zeile 252.
Ich habe versucht, die maximale Verschachtelungsebene auf 5000 festzulegen, aber das Limit wird immer erreicht.
Da die Protokolle darauf hinzudeuten scheinen, dass das Problem vom W3 TC-Plugging herrührt, habe ich versucht, es zu deaktivieren. Das Problem verschwand für eine Weile und ich konnte im Inkognito-Modus auf die Seite zugreifen, tauchte dann aber nach einiger Zeit wieder auf. Auch das Bereinigen des Caches mit W3 TC scheint das Problem vorübergehend zu lösen.
Von diesem Punkt an weiß ich nicht, was ich noch versuchen kann. Wie kann ich dieses Problem dauerhaft lösen?
“…aber dann nach einiger Zeit wieder aufgetaucht” Können Sie das bitte klarstellen? Ist das Problem vor oder nach der erneuten Aktivierung des W3 TC-Plug-ins erneut aufgetreten?
– JamesHoux
18. Juli 2019 um 22:27 Uhr
Es kann hilfreich sein, einen Debug-Trace anzuzeigen, wenn das Problem bei deaktiviertem W3 TC auftritt.
– JamesHoux
18. Juli 2019 um 22:28 Uhr
@JamesHoux Das Problem war mit und ohne aktiviertem W3 TC vorhanden. Außerdem ist der Trace auch bei deaktiviertem W3 TC immer gleich. Soll ich versuchen, den Ordner des Plugins vollständig zu löschen?
– Tyassin
19. Juli 2019 um 8:36 Uhr
Das klingt sehr verdächtig. Soweit ich wusste, sollte ein deaktiviertes Plugin nach der Funktionsweise von WordPress keinen Code ausführen können. Das von dir beschriebene Verhalten habe ich noch nie gehört. Sie könnten versuchen, den W3 TC-Plugin-Ordner zu löschen, um zu sehen, was passiert.
– JamesHoux
19. Juli 2019 um 14:45 Uhr
@JamesHoux Also habe ich das folgende vollständig gelöschte W3 TC-Plugin gelöscht Dies Lernprogramm. Alles ist jetzt gut. Ich weiß immer noch nicht, wie das Plugin funktioniert, auch nachdem ich es deaktiviert habe.
– Tyassin
23. Juli 2019 um 12:14 Uhr