De gevreesde ‘500 Internal Server Error’-foutmelding. De foutmelding lijkt altijd op het meest ongelegen moment te komen en je bent ineens met man en macht bezig om erachter te komen hoe je je WordPress site weer online kan krijgen. Geloof me, we hebben het allemaal meegemaakt. Andere foutmeldingen die zich op een vergelijkbare manier gedragen en je ook wellicht voorbij hebt zien komen zijn onder andere de foutmelding van het niet kunnen verbinden met de database en het gevreesde witte scherm des doods. Vanaf het moment dat je site down gaat verlies je bezoekers en klanten. Daarbij komt dat het er gewoon onprofessioneel uitziet voor je bedrijf als je website onbereikbaar is.
Vandaag nemen we een duik in de ‘500 Internal Server Error ’-foutmelding en kijken we naar een paar manieren om je site snel weer online kunt krijgen. Lees hieronder meer over wat deze foutmelding veroorzaakt en hoe je deze in de toekomst kunt voorkomen.
Wanneer je een website bezoekt, verstuurt je browser een verzoek naar de server waar de website wordt gehost. De server accepteert dit verzoek, verwerkt het en stuurt de opgevraagde bronnen terug (PHP, HTML, CSS, enz.) met een HTTP-header. De HTTP bevat ook een zogenaamde HTTP-statuscode. Een statuscode is een manier om je in te lichten over de status van een verzoek. Het zou een 200-statuscode kunnen zijn wat “Alles is OK” betekent, of het kan een 500-statuscode zijn die aangeeft dat er iets mis is gegaan.
Er zijn een hoop verschillende soorten 500-statuscodes (500, 501, 502, 503, 504, enz.) en ze betekenen allemaal iets anders. In het geval van een ‘500 Internal Server Error’-foutmelding betekent het dat de server een onverwachte status tegenkwam dat het uitvoeren van het verzoek heeft verhinderd (RFC 7231, sectie 6.6.1).
‘500 Internal Server Error’-foutmelding in WordPress
Door de verschillende webservers, besturingssystemen en browsers, kan een ‘500 Internal Server Error’-foutmelding er op een aantal verschillende manieren uitzien, maar ze komen allemaal op hetzelfde neer. Hieronder staan een paar voorbeelden van de vele verschillende variaties die je kunt tegenkomen op het web:
Het kan zijn dat het volgende bericht er bij staat:
De server heeft een interne fout of een fout in de configuratie, en was niet in staat om je aanvraag te voltooien. Neem contact op met de beheerder, webmaster@domain.com en informeer hem over de tijd dat de fout is opgetreden en alles wat je hebt gedaan wat de fout kan hebben veroorzaakt. Meer informatie over deze fout is beschikbaar in de serverlog.
‘Interne server’-foutmelding
Grotere merken soms zelfs hun eigen aangepaste ‘500 internal server’-foutmeldingen, zoals deze van Airbnb.
‘500 Internal Server Error’-foutmelding van Airbnb
Hier is nog een creatieve ‘500 Internal Server Error’-foutmelding door de mensen van readme.
‘500 Internal Server Error’-foutmelding van readme
Zelfs het machtige YouTube is niet gevrijwaard van ‘500 Internal Server’-foutmeldingen.
‘500 Internal Server Error’-foutmelding van YouTube
In tegenstelling tot 503-foutmeldingen, die worden gebruikt voor de WordPress-onderhoudsmodus om Google te laten weten dat ze op een later tijdstip moeten terugkomen, kunnen 500-foutmeldingen een negatieve impact hebben op SEO wanneer deze niet meteen worden opgelost. Als je site slechts 10 minuten down is en er wordt gecrawld, krijgt de crawler de pagina gewoon uit de cache. Dat is, als Google überhaupt je website heeft gecrawld voordat deze weer online is. In dit scenario is alles dus in orde.
Als de site echter een langere periode niet beschikbaar is, bijvoorbeeld voor meer dan zes uur, kan Google de 500-foutmelding zien als een probleem op site-niveau dat moet worden verholpen. Dit kan je webranking beïnvloeden. Als je je zorgen maakt over herhaaldelijke 500-foutmeldingen, moet je erachter komen wat ze veroorzaakt. Sommige van de onderstaande oplossingen kunnen helpen.
Waar moet je beginnen als je een ‘500 Internal Server Error’-foutmelding ziet op je WordPress-site? Soms weet je niet eens waar je moet beginnen met zoeken. Normaliter worden 500-foutmeldingen veroorzaakt aan de kant van de server, maar uit onze ervaring blijkt dat de foutmeldingen twee oorzaken hebben. De eerste is een gebruikersfout (client-side probleem), en de tweede is een probleem met de server (server-side probleem). Daarom zullen we duiken in beide oorzaken.
Bekijk deze veelvoorkomende oorzaken en manieren waarop je de ‘500 Internal Server Error’-foutmelding kunt verhelpen en je website snel weer online kunt krijgen.
Dit lijkt voor sommigen misschien vanzelfsprekend, maar een van de makkelijkste handelingen die je kunt proberen – en die je altijd als eerste zou moeten uitvoeren – wanneer je een ‘500 Internal Server Error’-foutmelding tegenkomt is om simpelweg een minuutje te wachten en de pagina te verversen (F5 of Ctrl + F5). Het zou kunnen dat de host of de server even overbelast is en snel weer beschikbaar zal zijn. Terwijl je wacht, kun je ook proberen om de website te openen in een andere browser om er zeker van te zijn dat dat niet het probleem is.
Iets anders dat je kunt doen is de websitelink kopiëren naar downforeveryoneorjustme.com. Deze website zal je vertellen of de website down is of dat het een probleem aan jouw kant is. Een dergelijke tool bekijkt de HTTP-statuscode dat het terugkrijgt van de server. Wanneer het iets anders is dan een ‘200 Alles is oké’-melding zal het je vertellen dat de website down is.
downforeveryoneorjustme
We hebben ook gemerkt dat de foutmelding voor kan komen meteen nadat je een plug-in of thema hebt geüpdatet op je WordPress-site. Meestal komt dit voor op hosts die niet naar behoren zijn ingesteld. Wat er dan gebeurt is dat ze vlak erna een tijdelijke time-out ervaren. Desondanks lossen de problemen zichzelf na een paar seconde op en is de pagina verversen alles wat je hoeft te doen.
Het legen van de browsercache is altijd een goede troubleshooting-stap om te nemen voordat je een diepe duik neemt in het debuggen van je website. Hieronder staan instructies voor het legen van de browsercache in de verschillende browsers:
Je moet altijd gebruik maken van je foutmeldingenlogs. Als je een klant bent bij Colani.nl, kun je gemakkelijk geregistreerde foutmeldingen zien in de log-viewer op het dashboard. Dit kan je helpen om een fout snel te specificeren, vooral als het wordt veroorzaakt door een plug-in op je site.
Zoek in de logs naar ‘500 Internal Server Error’-foutmeldingen
Als je host geen logtool aanbiedt, kun je de volgende code toevoegen aan het wp-config.php-bestand om het loggen van fouten in te schakelen:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
De logs staan meestal in the /wp-content-map. Bij sommige hosts, zoals Colani.nl, is er een aparte folder die ‘Logs’ heet.
Folder voor WordPress-foutmeldingenlogs (SFTP)
Je kunt ook de logbestanden bekijken in Apache en NGINX, waar ze meestal in de volgende mappen staan:
Als je een klant bent bij Colani.nl kun je ook gebruik maken van onze analytics tool om een overzicht te krijgen van het aantal 500-foutmeldingen en hoe vaak ze voorkomen. Dit kan van pas komen wanneer het een terugkerend probleem is of wanneer de fout zichzelf heeft opgelost.
500-foutmeldingenanalyse
Als de 500-foutmelding wordt veroorzaakt door een kritieke PHP-fout, kun je ook proberen om de registratie van PHP-foutmeldingen in te schakelen. Voeg simpelweg de volgende code toe aan het bestand dat de fout veroorzaakt. Je kunt het bestand meestal opsporen in het console-tabblad van Google Chrome DevTools.
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
En wellicht moet je je php.ini-bestand aanpassen met de volgende regel:
display_errors = on
‘500 Internal Server Error’-foutmeldingen kunnen worden veroorzaakt door een fout in de verbinding met de database. Afhankelijk van je browser kun je verschillende foutmeldingen zien. Desondanks zullen ze allebei een 500-statuscode genereren in je serverlogs.
Hieronder staat een voorbeeld van hoe een “fout bij het maken van een databaseverbinding”-melding eruitziet in je browser. De gehele pagina is leeg omdat er geen data opgehaald kan worden om de pagina te renderen, omdat de verbinding niet goed werkt. Dit breekt niet alleen de front-end van je website, maar verhindert ook de toegang tot je WordPress-dashboard.
Voorbeeld van een fout bij het maken van een databaseverbinding
Waarom gebeurt dit? Er zijn een paar veelvoorkomende redenen:
Bekijk onze diepgaande gids over hoe je een error met het maken van een databaseverbinding kunt verhelpen in WordPress.
Plug-ins van een externe partij kunnen gemakkelijk ‘500 Internal Server Error’-foutmeldingen veroorzaken. We hebben allerlei soorten boosdoeners bij Colani.nl voorbij zien komen, van sliderplug-ins tot plug-ins die advertenties roteren. Vaak zie je de fout onmiddellijk na het installeren van iets nieuws of het uitvoeren van een update. Dit is een reden waarom we altijd aanraden om een testomgeving te gebruiken voor updates, of tenminste om updates een voor een uit te voeren. Anders ben je, wanneer je een ‘500 Internal Server Error’-foutmelding tegenkomt, ineens aan het worstelen om erachter te komen welke er precies de oorzaak van was.
Een manier om dit op te lossen, is door al je plug-ins te deactiveren. Vergeet niet dat je geen gegevens verliest wanneer je een plug-in deactiveert. Als je nog steeds toegang hebt tot het beheer, kun je dit snel doen door naar “Plug-ins” te bladeren en “Deactiveren” te selecteren in het bulkacties-menu. Hiermee worden al je plug-ins uitgeschakeld.
Deactiveer alle plug-ins
Als dit het probleem verhelpt, moet je de boosdoener vinden. Je kan beginnen door ze een voor een te activeren en na elke activatie de pagina te verversen. Wanneer je de ‘500 Internal Server Error’-foutmelding ziet, heb je de schadelijke plug-in gevonden. Je kunt dan de plug-inontwikkelaar om hulp vragen of in het WordPress-forum een ticket voor ondersteuning plaatsen.
Als je geen toegang hebt tot het beheer, kun je via FTP met je server verbinden en de map van je plug-ins hernoemen naar bijvoorbeeld “plugins_oud”. Controleer vervolgens je site opnieuw. Als het werkt, moet je elke plug-in een voor een testen. Hernoem de map van je plug-in terug naar “plugins” en hernoem vervolgens elke plug-ins-map binnenin, een voor een, totdat je het vindt. Je kunt dit ook eerst proberen op een testsite.
Hernoem de plug-in-map
Zorg er altijd voor dat je plug-ins, thema’s en de WordPress-kern up-to-date zijn. En controleer of je een ondersteunde versie van PHP gebruikt. Als blijkt dat er een conflict is met slechte code in een plug-in, moet je mogelijk een WordPress-ontwikkelaar binnenhalen om het probleem op te lossen.
Soms kunnen de bestanden in de WordPress-kern beschadigd raken, vooral op oudere websites. Het is vrij makkelijk om de WordPress-kern opnieuw te uploaden zonder dat het je plug-ins of thema’s beïnvloedt. We hebben een uitgebreide handleiding met vijf verschillende manieren om WordPress te herinstalleren. Maak uiteraard wel een back-up voordat je doorgaat. Ga snel naar een van de secties hieronder:
Een machtigingsfout met een bestand of map kan ook een ‘500 Internal Server Error’-foutmelding veroorzaken. Hier zijn een aantal aanbevelingen met betrekking tot het machtigen van bestanden en mappen in WordPress:
Zie het WordPress-codex artikel over het aanpassen van machtigingen voor bestanden voor een uitgebreidere uitleg.
Je kunt je bestandsmachtigingen gemakkelijk zien met een FTP-client (zoals hieronder te zien is). Je kunt ook contact opnemen met het ondersteuningsteam van je WordPress-host en hen vragen om snel via GREP bestandsmachtigingen voor uw mappen en bestanden in te stellen om ervoor te zorgen dat ze correct worden ingesteld.
SFTP bestandsmachtigingen
Een ‘500-interne server’-foutmelding kan ook veroorzaakt worden doordat je aan het PHP-geheugenlimiet van je server zit. Je kunt proberen om het limiet te verhogen. Volg de onderstaande instructies om het limiet aan te passen in cPanel, Apache, je php.ini-bestand en je wp-config.php</code-bestand.
wp-config.php</code-bestand.
Als je website draait op een host die cPanel gebruikt, kun je het limiet gemakkelijk aanpassen in het gebruikersinterface. Klik onder ‘Software’ op ‘Select PHP Version’.
Selecteer PHP-versie
Klik op ‘Switch to PHP Options’.
Schakel over naar PHP-opties
Klik daarna op het memory_limit-attribuut en verander de waarde. Klik daarna op ‘Save’.
memory_limit
PHP-geheugenlimiet verhogen in cPanel
Het .htaccess -bestand is een speciaal verborgen bestand die verschillende instellingen bevat en die je kunt aanpassen om het gedrag van de server aan te passen op map-niveau. Log in op je site via FTP of SSH, kijk naar je root-map en zoek naar een .htaccess-bestand.
.htaccess
.htaccess-bestand
Als er een is kun je dat bestand aanpassen om de vereiste code voor het verhogen van het PHP-geheugenlimiet toe te voegen. Het staat waarschijnlijk ingesteld op 64M of minder, je kunt proberen om deze waarde te verhogen.
php_value memory_limit 128M
Als het bovenstaande niet werkt kun je proberen om je php.ini-bestand aan te passen. Log in op je site via FTP of SSH, ga naar de root-map van je site en open het php.ini-bestand of maak deze aan.
php.ini
php.ini-bestand
Als het bestand er al is, zoek dan naar de drie instellingen en pas ze aan indien nodig. Als je het bestand hebt aangemaakt of als de instellingen niet te vinden zijn, kopieer en plak dan de onderstaande code. Je kunt de waardes natuurlijk aanpassen afhankelijk van je behoeften.
memory_limit = 128M
Sommige shared hosts kunnen vereisen dat je een suPHP-instructie aan je .htaccess-bestand toevoegt voordat de bovenstaande instellingen in het php.ini-bestand zullen werken. Pas hiervoor je .htaccess-bestand aan, die ook te vinden is in de root-map van je site, en voeg bovenaan het bestand de onderstaande code toe:
suPHP_ConfigPath /home/yourusername/public_html
Als het bovenstaande niet werkt, kan het zijn dat je host globale instellingen heeft vergrendeld en ze in plaats daarvan gebruik maken van .user.ini-bestanden. Om je .user.ini-bestand aan te passen, log in op je site via FTP of SSH, ga naar de root-map van je site en open het .user.ini-bestand of maak deze aan. Daarna kun je de volgende code kopiëren en plakken:
.user.ini
We zijn geen fan van de laatste optie, maar als al het andere niet lukt kun je het proberen. Log in op je site via FTP of SSH, en zoek naar je wp-config.php-bestand, die normaliter in de root-map van je site staat.
wp-config.php-bestand
Voeg de onderstaande code toe aan je wp-config.php-bestand:
wp-config.php
define('WP_MEMORY_LIMIT', '128M');
Je kunt ook contact opnemen met je hostingprovider als je problemen hebt met het geheugenlimiet. Hier bij Colani.nl maken we gebruik van New Relic en andere methodes om problemen op te lossen om onze klanten te helpen bij het zoeken naar de plug-in, query of script dat het geheugenlimiet overschrijdt. Je kunt ook je gepersonaliseerde New Relic-sleutel gebruiken.
Debuggen met New Relic
Of je nu gebruik maakt van Nginx of Apache, maar als je een WordPress-host gebruikt die draait op Apache kan het zijn dat je .htaccess-bestand problemen oplevertof beschadigd is geraakt. Volg de onderstaande stappen om een nieuwe aan te maken. Log in op je site via FTP of SSH, en hernoem je .htaccess-bestand naar .htaccess_old.
.htaccess_old
.htaccess-bestand hernoemen
Meestal kun je om dit bestand opnieuw aan te maken simpelweg je permalinks opnieuw opslaan in WordPress. Als je echter middenin een ‘500 Internal Server Error’-foutmelding zit heb je waarschijnlijk geen toegang tot je WordPress-beheer en dan is dit geen optie. Daarom kun je een nieuw .htaccess-bestand aanmaken en de onderstaande inhoud eraan toevoegen. Upload het daarna op je server.
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Bekijk de WordPress Codex voor meer voorbeelden, zoals een standaard .htaccess-bestand voor multi-site-omgevingen.
500-Foutmeldingen die veroorzaakt worden door fouten in je CGI- en Perl-scripts zijn veel minder gebruikelijk dan ze vroeger waren. Desondanks is het belangrijk om te noemen, vooral voor diegenen die cPanel gebruiken waar nog steeds gebruik wordt gemaakt van veel one-click CGI-scripts. Zoals AEM op Stack Overflow zei:
CGI is vervangen door een grote verscheidenheid aan web-programmeertechnologieën, waaronder PHP, verschillende Apache-extensies zoals mod_perl, verschillende smaken en frameworks van Java, waaronder Java EE, Struts, Spring, enz., Python-gebaseerde frameworks zoals Django, Ruby on Rails en vele andere Ruby-frameworks, en verschillende Microsoft-technologieën.
Hier zijn nog een aantal tips voor het werken met CGI-scripts:
Ten slotte, omdat ‘500 Internal Server Error’-foutmeldingen kunnen worden veroorzaakt door een PHP-time-out of een kritieke PHP-fout met plug-ins van een derde partij, kun je altijd contact opnemen met je WordPress-host. Soms zijn deze problemen moeilijk op te lossen zonder de hulp van een expert. Hier zijn enkele veelvoorkomende voorbeelden van fouten die een ‘500 Internal Server Error’-foutmelding veroorzaken op je server:
PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_error()...
PHP message: PHP Fatal error: Uncaught Error: Cannot use object of type WP_Error as array in /www/folder/web/shared/content/plugins/plugin/functions.php:525
Wij monitoren we alle sites van onze klanten en worden we automatisch op de hoogte gesteld van soortgelijke problemen. Hierdoor kunnen we pro-actief alle problemen oplossen. We maken ook gebruik van LXD-managed-hosts en gearrangeerde LXC-softwarecontainers voor elke site. Dit betekent dat elke WordPress-site wordt gehuisvest in zijn eigen container, die alle softwarematige middelen heeft die nodig zijn om deze optimaal uit te voeren (Linux, Nginx, PHP, MySQL). De middelen zijn 100% privé en worden niet gedeeld met anderen, zelfs niet met je eigen sites.
PHP-time-outs kunnen ook worden veroorzaakt door een gebrek aan PHP-workers, hoewel deze normaliter 504-foutmeldingen zullen geven in plaats van 500-foutmeldingen. Deze bepalen hoeveel aanvragen er tegelijkertijd kunnen worden afgehandeld op je site. Simpel gezegd, elke ongecachete aanvraag voor je website wordt afgehandeld door een PHP-worker.
Wanneer PHP-workers bezig zijn op een site, bouwen ze een wachtrij op. Wanneer je je limiet aan PHP-workers hebt bereikt, duwt de wachtrij oudere aanvragen weg, wat tot 500-foutmeldingen of incomplete aanvragen kan leiden. Lees ons uitgebreide artikel over PHP-workers.
Als je je zorgen maakt over dit soort foutmeldingen op je site, kun je een tool gebruiken zoals updown.io om je site te monitoren en je meteen op de hoogte stellen wanneer deze zich voordoen. Het stuurt periodieke HTTP-HEAD-aanvragen naar een URL naar keuze. Je kunt gewoon je homepage gebruiken. De tool laat je controleerfrequenties instellen van:
Het zal je een e-mail sturen wanneer je site down gaat. Hieronder staat een voorbeeld.
E-mailnotificatie van een 500-foutmelding.
Dit kan vooral van pas komen als je een plug-in aan het debuggen bent of wanneer je op een shared host zit met overvolle servers. Dit kan bewijs leveren voor hoe vaak je site daadwerkelijk down gaat (zelfs midden in de nacht). Dat is waarom we altijd aanraden om gebruik te maken van een beheerde WordPress-host. Zorg ervoor dat je onze post leest over de top 9 redenen om te kiezen voor een shared WordPress-host.
‘500 Internal Server Error’-foutmeldingen zijn altijd frustrerend, maar hopelijk weet je nu een aantal nieuwe manieren om de problemen op te lossen en snel je site weer online te krijgen. Onthoud dat deze soort foutmeldingen meestal worden veroorzaakt door plug-ins van een derde partij, kritieke PHP-fouten, problemen met het verbinden met de database, problemen met je .htacces-bestand of je PHP-geheugenlimiet, en PHP-time-outs.
Is er iets dat we over het hoofd hebben gezien? Wellicht heb je nog een andere tip voor het troubleshooten van ‘500 Internal Server Error’-foutmeldingen. Laat het ons weten door hieronder een reactie achter te laten.
« Ga terug