500 Internal Server Error: de oorzaak vinden in de logs en de site weer online krijgen
· 5 min leestijd
Wat de fout betekent
Een fout 500 is het antwoord van een server die het verzoek heeft ontvangen, heeft geprobeerd het uit te voeren en is vastgelopen zonder te zeggen waarom. De webserver werkt; de applicatie erachter (bijna altijd PHP, met WordPress) is gestart en met een fout gestopt. De browser toont een wit scherm of “Deze pagina werkt niet” met “HTTP ERROR 500”; WordPress soms “Er is een kritieke fout opgetreden op deze website”.
Het verschil met de buren: een 502 Bad Gateway betekent dat de webserver de applicatie niet kon bereiken (PHP-FPM gestopt); een 503 dat hij met opzet geen pagina’s levert (overbelasting, onderhoudsmodus); een 403 Forbidden dat de toegang wordt geblokkeerd door rechten of regels. Een 500 betekent dat de applicatie heeft geantwoord, maar met een fout. De oorzaak zit bijna altijd in je eigen bestanden of configuratie, en de precieze reden staat in een log.
Veelvoorkomende oorzaken
- Een plugin of thema na een update. Een bestand dat niet overweg kan met de PHP-versie, een conflict tussen twee plugins. Oorzaak nummer één op WordPress.
- Een andere PHP-versie. Je stapt over naar een nieuwere versie en een deel van de site gebruikt een syntax of module die is verwijderd.
- Een syntaxfout in
.htaccess. Een verkeerd geschreven regel of een ontbrekende Apache-module: Apache geeft 500 nog voordat PHP start. - Verkeerde rechten of eigenaar. Na een migratie zijn sommige mappen van
root, onleesbaar voor PHP, of juist te open. - Geheugenlimiet bereikt. Een pagina heeft meer nodig dan
memory_limit. - Database. Gewijzigde inloggegevens, MySQL of MariaDB gestopt, schijf vol, beschadigde tabel.
Als je bezoeker bent
Op een site die niet van jou is, kun je niets repareren. Probeer het later opnieuw; blijft de fout, dan moet de eigenaar ingrijpen.
Als het je eigen site is: eerst controleren
Open de Website down checker: die laat de HTTP-code zien zoals die van buitenaf binnenkomt. Lees daarna de logs van de server:
# de laatste fouten, de nieuwste onderaan
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/apache2/error.log
sudo tail -n 50 /var/log/php8.3-fpm.log
sudo journalctl -u php8.3-fpm -n 50
Op shared hosting heet het log meestal error_log en staat het in de map van de site. Typische regels:
PHP Fatal error: Uncaught Error: plugin of thema past niet; het bestandspad zegt welke.PHP Parse error: een gewijzigd bestand of een onvolledige update.Allowed memory size of ... bytes exhausted: geheugenlimiet..htaccess: Invalid command: syntaxfout of ontbrekende module.Permission denied: rechten of eigenaar.Error establishing a database connection: database.
Oplossingen op je eigen server of hosting met SSH
1. De schuldige plugin of het thema uitschakelen
Op WordPress hernoem je de map van de plugin: hij blijft uit zonder dat je de database aanraakt.
cd /var/www/example.com/wp-content/plugins
mv naam-plugin naam-plugin.uit
Weet je niet welke het is, hernoem dan de hele map plugins: de site komt terug en je zet de plugins één voor één weer aan. Voor het thema hernoem je zijn map in wp-content/themes; WordPress valt terug op een standaardthema. Met WP-CLI:
wp plugin list --status=active
wp plugin deactivate naam-plugin
Om de fout te lezen terwijl je zoekt, zet je de debugmodus aan in wp-config.php (en daarna weer uit); de fouten komen in wp-content/debug.log:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
2. Terug naar de PHP-versie die werkte
php -v toont de actieve versie en ls /etc/php/ de geïnstalleerde; op shared hosting kies je de versie in het klantenpaneel. Ga terug naar de vorige versie om de site online te krijgen en werk daarna eerst de schuldige plugin bij voordat je opnieuw overstapt.
3. .htaccess repareren
Hernoem het bestand om het uit te sluiten: komt de site terug (ook met kapotte links), dan zit de oorzaak daarin.
mv .htaccess .htaccess.uit
sudo apachectl -M | grep rewrite
Zet de blokken daarna één voor één terug. Een ontbrekende module zet je aan met sudo a2enmod rewrite; herlaad daarna Apache.
4. Rechten en eigenaar
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Vervang www-data door de gebruiker van je PHP-FPM-pool.
5. Geheugen
Verhoog memory_limit in de PHP-FPM-pool of in php.ini en herlaad PHP-FPM. Op WordPress doet define('WP_MEMORY_LIMIT', '256M'); in wp-config.php hetzelfde, binnen de limiet van de server. Controleer met free -m of er genoeg geheugen is.
6. Database
systemctl status mariadb
sudo systemctl start mariadb
df -h
Vergelijk de inloggegevens in wp-config.php met die van de database; wp db repair herstelt een beschadigde tabel.
Ligt het bij je hostingprovider?
Is er aan jouw kant niets veranderd en zijn de logs leeg, stuur dan dit:
Goedemorgen, mijn website example.com geeft sinds ongeveer 9:30 (UTC) “500 Internal Server Error”. Ik heb zelf niets gewijzigd en het foutenlog laat niets zien. Is er een PHP-versie gewijzigd of is er een probleem op de server van mijn account? Kunt u dit controleren en mij laten weten wanneer de site weer online is?
Zo gebeurt het niet opnieuw
Een fout 500 komt bijna altijd direct na een update, en een controle van buitenaf ziet hem zodra hij verschijnt, vóór je bezoekers. Server monitoring houdt ook schijfruimte, geheugen en diensten in de gaten en waarschuwt voordat de database stopt door ruimtegebrek. Draait je site op WordPress, dan zorgt WordPress onderhoud op aanvraag, zonder contract, ervoor dat de plugin die niet past wordt bijgewerkt voordat hij iets kapotmaakt.
Down? Wij fixen het. Op je eigen server of op shared hosting met SSH-toegang herstelt de Quick Fix, de automatische reparatie tegen een vaste prijs, kleine configuratiefouten, met eerst een back-up; de Deep Fix neemt de plugin die niet past of de PHP-versie voor zijn rekening, per blok van 15 minuten, 24 uur per dag, ook in het weekend; de schatting is de bovengrens.
En nu
Controleer het van buitenaf
Is de site voor iedereen down of alleen bij jou, en wat antwoordt de server? Gratis, zonder account.
Website down checkerDown? Wij fixen het.
Op je eigen server of op shared hosting met SSH-toegang: Quick Fix tegen een vaste prijs voor de meest voorkomende oorzaken, Deep Fix gefactureerd per blok van 15 minuten voor al het andere, 24/7. Prijs zichtbaar vóór je bestelt.
Reparatie bestellenMeer uit de kennisbank
- Website down: wat je doet in de eerste 15 minuten
- Server down of niet bereikbaar: wat je controleert en in welke volgorde
- 502 Bad Gateway: de oorzaak vinden en oplossen
- 503 Service Unavailable: overbelasting, onderhoud of een limiet van de hosting?
- 504 Gateway Timeout: vinden wat de site vertraagt
- Cloudflare-fout 521 en 522: de origin-server antwoordt niet
- DNS_PROBE_FINISHED_NXDOMAIN: het domein antwoordt niet meer
- ERR_CONNECTION_REFUSED: de server weigert de verbinding
- ERR_CONNECTION_TIMED_OUT: de server antwoordt niet op tijd
- Wat “Je verbinding is niet privé” betekent en hoe je het oplost
- ERR_SSL_PROTOCOL_ERROR: de veilige verbinding mislukt nog vóór het certificaat
- ERR_TOO_MANY_REDIRECTS: de doorverwijzingslus vinden en doorbreken
- 403 Forbidden: wat de toegang tot je site blokkeert
- ERR_CONNECTION_RESET: waarom de verbinding halverwege wegvalt
- 429 Too Many Requests: welke limiet je bezoekers tegenhoudt