Module 5 · 5.4
Minder is meer: opruimen en conflicten oplossen
Module 5: Thema's en plugins · Leestijd: 9 minuten
Leerdoel: Na deze les kun je plugins opruimen en een conflict of een witte pagina zelf opsporen en oplossen.
Kernbegrippen: deactiveren vs verwijderen, inactieve code, kritieke fout, herstelmodus (recovery mode), Sitediagnose, problemen-oplossen-modus, pluginmap hernoemen, WP_DEBUG, WP_DEBUG_LOG, debug.log, foutlog
Uitzetten is niet weggooien
Bij Plugins kun je een plugin deactiveren of verwijderen. Het verschil:
- Deactiveren: WordPress laadt de plugin niet meer. Maar de bestanden blijven in
wp-content/plugins/staan, en zijn vaak nog rechtstreeks via de webserver op te vragen. Zit er een lek in een los PHP-bestand van die plugin, dan is dat lek er nog steeds. Inbrekers scannen op bekende kwetsbare bestanden, niet op actieve plugins. - Verwijderen: de bestanden gaan weg. Sommige plugins ruimen bij het verwijderen ook hun instellingen en tabellen in de database op; andere laten die staan.
Gebruik je een plugin niet meer, verwijder hem dan. Deactiveren is alleen voor even (tijdens het zoeken naar een probleem). Hetzelfde geldt voor thema's (les 2.4).
Opruimen: een vaste ronde
Loop één keer per kwartaal (les 9.4) je plugins langs. Per plugin:
- Waarvoor is hij? Weet je het niet meer, zoek het uit. Vaak blijkt een plugin ooit voor één ding geïnstalleerd en nooit weggehaald.
- Wordt hij nog gebruikt? Een sliderplugin terwijl er nergens een slider staat, een formulierplugin terwijl je contactpagina een ander formulier gebruikt.
- Kan het zonder? Kan WordPress, het thema of een andere plugin het al (les 5.3)?
- Is hij nog in onderhoud? Laatst bijgewerkt, nog in de pluginmap?
Doe het opruimen eerst in staging (les 8.3), of maak minstens een back-up, en verwijder één plugin tegelijk zodat je weet wat er misging als er iets misgaat. Let op shortcodes: verwijder je een plugin die [formulier id="2"] leverde, dan staat die tekst daarna letterlijk op je pagina.
Als het misgaat: de kritieke fout
Na een update, een nieuwe plugin of een PHP-upgrade zie je opeens:
Er is een kritieke fout op deze website.of een volledig witte pagina. Dat betekent: PHP is gestopt met een fatale fout voordat er een pagina was (les 1.2). Meestal komt dat door een plugin of thema dat niet samengaat met iets anders: een andere plugin, de nieuwe versie van WordPress, of de PHP-versie.
Sinds WordPress 5.2 doet WordPress dan twee dingen:
- het stuurt een e-mail naar het beheerdersadres met welke plugin of welk thema de fout gaf, en een speciale link;
- met die link log je in in de herstelmodus (recovery mode): het beheer werkt dan, met de plugin die de fout gaf tijdelijk uitgezet, zodat je hem kunt bijwerken, vervangen of verwijderen.
Daarom is een beheerdersadres dat je leest zo belangrijk (les 2.2).
Zelf zoeken: de stappen
Komt er geen mail, of werkt de herstelmodus niet? Zo vind je het zelf.
1. Kijk in het foutlog
De fout staat bijna altijd in het foutlog van de webserver of van PHP. Bij DirectAdmin vind je dat bij de logboeken van je domein. Je zoekt een regel met PHP Fatal error en het tijdstip van je poging:
PHP Fatal error: Uncaught Error: Call to undefined function create_function()
in /home/gebruiker/domains/example.com/public_html/wp-content/plugins/oude-slider/slider.php:42Het pad vertelt je wie de schuldige is: hier de plugin in de map oude-slider. De rest van de regel vertelt waarom (hier: een functie die in PHP 8 is verwijderd, les 8.4).
2. Zet de debuglog aan (niet de schermmelding)
Staat er niets bruikbaars in het foutlog, zet dan in wp-config.php (boven "stop met bewerken"):
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );WordPress schrijft dan alle fouten naar wp-content/debug.log, zonder ze aan bezoekers te tonen. Laat dit nooit langer aan staan dan nodig: debug.log staat in een map die de webserver aanbiedt, en wie het adres kent, kan het lezen. Daarin staan paden, soms gebruikersnamen en andere informatie die een inbreker helpt. Zet het na het zoeken weer uit en verwijder debug.log. Of laat WordPress het logbestand buiten de webmap schrijven door bij WP_DEBUG_LOG een pad op te geven (bijvoorbeeld '/home/gebruiker/logs/wp-debug.log', als je hoster dat toestaat). In les 7.4 controleer je dat debug.log niet openbaar is.
3. Plugin uitzetten zonder beheer
Kom je niet in het beheer, zet de verdachte plugin dan uit door zijn map te hernoemen, via Bestandsbeheer of SFTP:
wp-content/plugins/oude-slider wordt wp-content/plugins/oude-slider-uitWordPress vindt de plugin dan niet meer en zet hem uit. Weet je niet welke het is, hernoem dan de hele map plugins naar plugins-uit: alle plugins gaan uit. Werkt de site dan, maak een nieuwe lege map plugins, zet de plugins één voor één terug en kijk na elke plugin of de fout terugkomt. Voor een thema geldt hetzelfde: hernoem de map van het actieve thema en WordPress valt terug op een standaardthema, als dat er nog staat (les 2.4).
4. Conflicten zonder fatale fout
Niet elk probleem is een kritieke fout. Soms werkt één functie niet: een knop doet niets, het formulier verstuurt niet, de editor laadt half. Dan is het vaak een conflict tussen twee plugins of tussen een plugin en het thema. Daarvoor is de officiële plugin Health Check & Troubleshooting handig: in de problemen-oplossen-modus zet hij voor alleen jouw sessie alle plugins uit en schakelt hij naar een standaardthema, terwijl bezoekers gewoon de normale site zien. Daarna zet je ze één voor één aan tot het probleem terugkomt.
Kijk ook in de console van je browser (F12): JavaScript-fouten noemen vaak het bestand, en daarmee de plugin.
Sitediagnose
Onder Hulpmiddelen > Sitediagnose controleert WordPress zelf je site: verouderde PHP-versie, plugins en thema's die niet actief zijn, ontbrekende PHP-extensies, een REST API die niet werkt, geplande taken die achterlopen. Op het tabblad Info staan alle gegevens van je installatie (versies, paden, PHP-instellingen). Dat tabblad kun je kopiëren en meesturen als je hulp vraagt. Kijk hier na elke grote wijziging even.
Samenvatting
- Deactiveren laat de bestanden staan; verwijder plugins en thema's die je niet gebruikt.
- Ruim elk kwartaal op, één plugin tegelijk, met een back-up of in staging.
- Bij een kritieke fout stuurt WordPress een mail met een link naar de herstelmodus.
- Het foutlog of
debug.lognoemt het pad van de schuldige; zet debug na het zoeken weer uit, wantdebug.logis anders openbaar. - Zonder beheer zet je een plugin uit door zijn map te hernoemen; conflicten zoek je met de problemen-oplossen-modus.
Quiz
Opdracht
Opdracht A5.4: Is je debug-log niet openbaar? Vul het adres van je site in en bewijs met de code die de opdracht je geeft dat het je eigen site is (een TXT-record of een klein bestand). Het programma vraagt /wp-content/debug.log op: goed is als dat niet bestaat of geweigerd wordt (404 of 403). Krijgt het programma een bestand terug, dan is dat rood. Daarnaast telt het programma hoeveel verschillende pluginmappen in de HTML van je homepage voorkomen (alleen ter informatie).
Opdracht D5.4: Je pluginlijst opruimen. Maak een lijst van al je plugins (actief en inactief): naam, waarvoor, nog nodig (ja/nee), alternatief zonder plugin. Verwijder (na een back-up of in staging) de plugins die niet meer nodig zijn, één tegelijk, en kijk na elke verwijdering of de site nog werkt. Vul in hoeveel plugins je had en hoeveel er over zijn, en noteer of er shortcodes achterbleven die je moest opruimen.
Opdracht D5.4: Je pluginlijst opruimen
Deze opdracht doe je zelf; niemand kijkt hem na. Vink af wat je gedaan hebt en markeer de opdracht als gedaan.
Het aantal na is kleiner of gelijk, en bij elke plugin die blijft staat een reden. Inactieve plugins verwijder je: ook uitgeschakelde code kan een lek bevatten.
Je vinkjes en aantekeningen blijven alleen in deze browser; we sturen ze nergens heen. Ben je aangemeld, dan bewaren we in Mijn cursussen alleen dat je de opdracht gedaan hebt.
Verder lezen
Deze artikelen beschrijven de stappen in de panelen van WebOké; in andere panelen werken ze vergelijkbaar.
- DirectAdmin handleiding 18.1: Mijn website is wit of geeft een fout 500
- Fout 500 of "kritieke fout" op je website (ook na een WordPress-update)
- DirectAdmin handleiding 14.6: Fouten na een PHP-upgrade en het foutlog vinden
- DirectAdmin handleiding 17.2: Siteoverzicht en logboeken: het foutlog en het toegangslog
- PHP-fouten tonen zonder de php.ini aan te passen
- Debuggen in WordPress (developer.wordpress.org, Engels): https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/
