Hoe kan ik plugins controleren op niet afgesloten PHP sessies?
1. Check de HTTP‑headers (meest direct & betrouwbaar)
Open je site in Chrome → DevTools → tab Network → klik op de eerste request (meestal /).
Kijk onder Headers → Response Headers of je dit ziet:
Set-Cookie: PHPSESSID=...
Cache-Control: no-store, no-cache
Pragma: no-cache
Als je PHPSESSID ziet → er wordt een sessie gestart.
Als je dit ziet op elke page load, dan wordt de sessie niet goed afgesloten of onnodig opnieuw gestart.
2. Debug log aanzetten en zoeken naar session_start()
Voeg tijdelijk toe aan wp-config.php:
php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
Daarna:
Ga naar /wp-content/debug.log
Zoek op:
Code
session_start
session_write_close
session_destroy
Als je session_start() ziet zonder session_write_close(), dan sluit een plugin de sessie niet goed af.
3. Plugin conflict test: sessie‑start detecteren via MU‑plugin
Maak een MU‑plugin aan:
Bestand: /wp-content/mu-plugins/session-debug.php
php
<?php
add_action( 'init', function() {
if ( session_status() === PHP_SESSION_ACTIVE ) {
error_log( '⚠ PHP session already active at init by: ' . print_r( debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS ), true ) );
}
});
Dit logt welke plugin de sessie start.
Daarna check je debug.log.
4. Query Monitor plugin gebruiken
Installeer Query Monitor.
Ga naar:
Admin bar → Query Monitor → PHP Errors → Hooks
Je ziet:
of session_start() is aangeroepen
door welke plugin
op welk moment
Super handig als je snel wilt zien wie de boosdoener is.
Bonus: hoe herken je een plugin die sessies niet goed afsluit?
Let op deze symptomen:
Pagina’s worden niet gecachet (bijv. LiteSpeed/Cloudflare/NGINX)
PHPSESSID cookie blijft bestaan na uitloggen
session_start() wordt meerdere keren aangeroepen
WooCommerce checkout wordt traag
Admin bar verdwijnt soms
Random 500 errors bij hoge load