Det som oftast har hänt är att ett plugin eller tema inte tål den nya versionen av WordPress, PHP eller av sig självt. I nio fall av tio löser du det genom att stänga av det som uppdaterades sist, antingen via mejlet WordPress skickar när sajten kraschar eller genom att byta namn på pluginets mapp via FTP. Har du en backup från före uppdateringen är det den snabbaste vägen tillbaka.
Nedan är felsökningen i den ordning jag själv gör den när en kund ringer. Du behöver ett FTP-program eller webbhotellets filhanterare och inloggningen till webbhotellet.
Vad felet ser ut som, och vad det brukar betyda
En helt vit sida betyder att PHP stannade innan WordPress hann skriva ut något, oftast ett fatalt fel i ett plugin eller tema, ibland slut på minne. Texten ”Ett kritiskt fel har inträffat på webbplatsen” är samma sak, men WordPress hann fånga felet. Sedan version 5.2 skickar WordPress då ett mejl med en återställningslänk, och det är det första du ska leta efter.
”500 Internal Server Error” kommer från webbservern. Här är den vanligaste orsaken en .htaccess-fil som ett plugin skrivit rader i, därefter PHP-version och minnesgräns.
Laddar sidan men ser trasig ut, utan stilar eller med block som saknas, är det nästan alltid ett cacheplugin som serverar gamla filer. Kommer du inte in i admin medan framsidan fungerar är det vanligen ett plugin som bara laddas i admin. Står det ”Briefly unavailable for scheduled maintenance” har uppdateringen avbrutits och lämnat filen .maintenance i sajtens rotmapp.
Troliga orsaker i sannolikhetsordning
Pluginkonflikt och temakonflikt kommer först, med god marginal. Ett plugin uppdaterades till en version som kräver en nyare WordPress, eller tvärtom. Därefter kommer PHP-versionen: webbhotellet bytte till PHP 8.x och ett plugin som inte rörts på några år använder funktioner som inte finns längre.
Minnesgränsen är orsak nummer tre. Den nya versionen behöver mer än de 40 MB WordPress tilldelar som standard, och ”Allowed memory size exhausted” dyker upp. Avbruten uppdatering är ovanligare men otäckare, eftersom halva filer kan ligga kvar. Cache sist: sajten är lagad, men cachen visar fortfarande den trasiga versionen.
Kontrollera i den här ordningen
1. Leta efter mejlet från WordPress
När ett fatalt fel inträffar under en vanlig sidvisning skickar WordPress ett mejl till adressen under Inställningar > Allmänt, med felet, vilket plugin eller tema som orsakade det och en länk som loggar in dig i återställningsläge. I det läget är det trasiga pluginet pausat bara för din webbläsare, besökarna ser fortfarande felet tills du gjort något.
Klicka på länken, logga in, gå till Tillägg och avaktivera det som pekas ut. Klicka sedan på ”Avsluta återställningsläge” i adminfältet och kontrollera att sajten laddar. Hittar du inget mejl, titta i skräpposten. Inträffar felet innan ett SMTP-plugin hunnit laddas skickas mejlet direkt från webbservern, och då fastnar det lätt.
2. Slå på felsökningsloggen
Kom inget mejl, eller pekar det inte ut något, behöver du se felet. Öppna wp-config.php i sajtens rotmapp via FTP eller filhanteraren och lägg in raderna nedan ovanför kommentaren /* That's all, stop editing! */. Finns raderna redan i filen ändrar du värdena i stället för att lägga till nya.
<?php
// Temporary debug logging for troubleshooting. Remove or set WP_DEBUG to false
// when you are done: the log grows fast and must not stay on in production.
if ( ! defined( 'WP_DEBUG' ) ) {
define( 'WP_DEBUG', true );
}
if ( ! defined( 'WP_DEBUG_LOG' ) ) {
define( 'WP_DEBUG_LOG', true );
}
if ( ! defined( 'WP_DEBUG_DISPLAY' ) ) {
define( 'WP_DEBUG_DISPLAY', false );
}
// Keep errors out of the browser so visitors never see file paths.
@ini_set( 'display_errors', '0' );
Ladda sedan sidan som är trasig en gång och öppna filen wp-content/debug.log. Den sista raden som börjar med ”PHP Fatal error” anger fil och radnummer. Ligger filen under wp-content/plugins/ vet du vilket plugin det är. Ligger den under wp-content/themes/ är det temat.
Loopias egen guide för samma sak säger också att du ska sätta WP_CACHE till false om den raden finns, så att du inte felsöker mot cachade sidor.
3. Stäng av pluginet via FTP eller filhanteraren
Du avaktiverar ett plugin utan att komma in i admin genom att byta namn på dess mapp under wp-content/plugins/, till exempel från woocommerce-pdf-invoices till woocommerce-pdf-invoices-av. WordPress ser att mappen saknas och avaktiverar pluginet vid nästa sidladdning. Inställningarna ligger kvar i databasen.
Vet du inte vilket plugin det är byter du namn på hela mappen plugins till plugins-av, loggar in och byter tillbaka. Alla plugins är då avaktiverade, och du aktiverar ett i taget tills felet kommer tillbaka.
Hos Oderland och Inleed finns en filhanterare i kontrollpanelen, cPanel respektive DirectAdmin, och one.com har sin File Manager under Files & Security. Loopia hänvisar i stället till FTP med till exempel FileZilla, och stöder enligt sin egen hjälpsida FTPS men inte SFTP, så välj ”FTP över TLS” i programmet.
4. Byt till ett standardtema
Pekar loggen på temat gör du samma sak med temats mapp under wp-content/themes/. WordPress faller då tillbaka på ett installerat standardtema som Twenty Twenty-Five. Sajten ser fel ut under tiden, men den laddar. Använder du ett barntema är det oftast barntemats functions.php som är problemet, så döp om den mappen först.
5. Kontrollera PHP-versionen hos webbhotellet
Säger loggen ”Call to undefined function” eller ”syntax error, unexpected” i ett plugin som inte uppdaterats på länge är det troligen PHP-versionen. Gå tillfälligt tillbaka ett steg, få upp sajten, uppdatera eller byt ut pluginet och gå sedan framåt igen.
Hos Loopia byter du version i Kundzonen genom att klicka på domännamnet, gå till inställningarna för Unix-webbplatsen och där välja version och spara. Hos Oderland loggar du in i cPanel, klickar på ”Select PHP Version” under Software och väljer version och Apply. Hos Inleed öppnar du DirectAdmin från kundzonen, går till ”Extra Features” och ”Select PHP version”, väljer version och klickar Apply. Hos one.com ligger det under Advanced settings, ”PHP (& subdomains)”, där du klickar Edit på domänen och väljer version. Loopia och one.com skriver uttryckligen i sina hjälpsidor att ett byte bakåt är en tillfällig åtgärd tills sajten är uppdaterad.
Är felet i stället ”Allowed memory size exhausted” höjer du minnesgränsen i wp-config.php med define( 'WP_MEMORY_LIMIT', '256M' ); ovanför samma stoppkommentar. Räcker inte det sätter webbhotellets PHP-gräns taket, och den ändras i kontrollpanelen eller via supporten.
Åtgärda och återställ
När sajten laddar igen har du tre val. Uppdatera det trasiga pluginet en gång till, eftersom utvecklaren ofta hunnit släppa en rättning. Ladda ner en färsk kopia från wordpress.org och ersätt hela mappen via FTP, vilket också löser en avbruten uppdatering med halva filer kvar. Eller ta bort pluginet och hitta ett annat.
Blev det en avbruten WordPress-uppdatering tar du bort filen .maintenance i rotmappen och kör uppdateringen igen från Instrumentpanelen > Uppdateringar. Ligger sajten fortfarande nere laddar du upp wp-admin och wp-includes från en nedladdad WordPress-zip; de innehåller inget av ditt eget.
Vill du hellre tillbaka till läget före uppdateringen återställer du från backup. Har webbhotellet en backupfunktion i kontrollpanelen är det snabbast att återställa både filer och databas till dagen före. Har du ett backupplugin återställer du filerna via FTP först, så att pluginet går att köra. Återställ alltid båda delarna, annars kan databasen ha ändringar som den gamla koden inte förstår.
Töm cachen sist, i cachepluginet, i webbhotellets panel och i webbläsaren.
Upptäck det tidigt nästa gång
Det dyraste med en trasig sajt är inte reparationen utan timmarna innan någon märker det.
Uppdatera säkert nästa gång
Det här är rutinen jag kör på varje kundsajt.
- Ta en backup av både filer och databas direkt innan, inte den från i natt.
- Testa på en staging-kopia om webbhotellet erbjuder en, annars på en kopia under en underdomän.
- Uppdatera ett plugin i taget och ladda sajten mellan varje. Då vet du vilket som gick sönder.
- Läs ändringsloggen innan du klickar. Står det ”breaking changes” väntar du en vecka och låter andra hitta felen.
- Uppdatera på en tid när du har tid att laga, inte fredag klockan 16.
Fallgropar
Plugins under wp-content/mu-plugins/ går inte att avaktivera i admin och pausas inte av återställningsläget, så där är filnamnsbytet via FTP enda vägen.
Cacheplugins lämnar filerna advanced-cache.php och ibland object-cache.php kvar i wp-content/ när du döper om pluginmappen. Då pekar de på kod som inte finns och sajten kraschar av det i stället, så döp om dem också.
Stäng av felsökningsloggen när du är klar. Lämnar du WP_DEBUG på växer debug.log snabbt och ligger läsbar för vem som helst på /wp-content/debug.log.
Länken i återställningsmejlet är tidsbegränsad och WordPress skickar inget nytt mejl på begäran. Har länken slutat fungera går du på loggen och FTP i stället.
Pihlfelt & Vänner
Vill du att vi löser det?
Vi tar reda på vilken uppdatering som orsakade felet, får sajten att fungera igen och kan ta över uppdateringarna så att de testas på staging först.
Vanliga frågor
Jag fick inget mejl från WordPress, vad gör jag?
Kolla skräpposten och kontrollera vilken adress som står under Inställningar > Allmänt, det är dit mejlet går. Inträffar felet innan ditt SMTP-plugin hinner laddas skickas mejlet direkt från webbservern och fastnar lättare i spamfilter. Kommer inget mejl går du vidare till felsökningsloggen och FTP-stegen i artikeln.
Är det farligt att byta namn på pluginmappen?
Nej, inställningarna ligger kvar i databasen. WordPress ser bara att pluginet saknas och avaktiverar det. Byter du tillbaka namnet kan du aktivera det igen från Tillägg i adminpanelen.
Hur vet jag om det var en WordPress-uppdatering eller ett plugin som orsakade felet?
Felsökningsloggen i wp-content/debug.log anger filen där felet uppstod. Innehåller sökvägen wp-content/plugins/ är det ett plugin, wp-content/themes/ ett tema, och ligger den i wp-includes/ eller wp-admin/ är det kärnan eller en avbruten uppdatering.
Kan jag bara gå tillbaka till den gamla versionen av pluginet?
Ja, som en tillfällig lösning. På wordpress.org finns äldre versioner under Advanced view på pluginets sida. Ladda ner, packa upp och ersätt mappen via FTP. Men nedgraderingen är bara ett andrum, pluginet behöver uppdateras eller bytas ut inom kort.
Källor
- Recovery Mode, WordPress Documentation
- Fatal Error Recovery Mode in 5.2, Make WordPress Core
- Debugging in WordPress (WP_DEBUG, WP_DEBUG_LOG, WP_DEBUG_DISPLAY), Advanced Administration Handbook
- Common WordPress Errors, Advanced Administration Handbook
- FAQ Troubleshooting (deaktivera plugins via FTP, .maintenance), WordPress Documentation
- Flytta WordPress till en nyare PHP-version, Loopia Support
- How do I manage PHP?, Oderland Support
- Ändra PHP-version, Inleed Helpcenter
- How do I change the PHP version?, one.com Help
