Beoordeel dit artikel :
2,5/5 | 2 mening
Dit artikel was nuttig voor jou ?
Ja
Geen
Vous avez noté 0 étoile(s)
Sommaire
Procédure
Als je een website probeert te bezoeken en je ziet de foutmelding "500 Internal Server Error", dan betekent dit dat er iets mis is gegaan met de website. De foutmelding kan bijzonder frustrerend zijn, omdat er geen informatie wordt gegeven over de specifieke oorzaak van de fout. Dit artikel laat zien hoe je een 500-fout op je website kunt debuggen.
Een lege pagina is niet noodzakelijkerwijs een 500 fout, en omgekeerd. Een 500-fout betekent dat er een fout is opgetreden tijdens de verwerking van het HTTP-verzoek. Dit kan een fout zijn bij het uitvoeren van het bijbehorende script, een probleem bij de toegang tot een bron, enzovoort, waardoor de webserver een antwoord terugstuurt met de foutcode 500. Een lege pagina daarentegen betekent dat de webserver geen enkel lichaam in zijn antwoord heeft teruggestuurd, of zelfs helemaal geen antwoord.
In sommige situaties betekent een 500-fout dat de webserver geen antwoord kan geven en daarom een lege pagina veroorzaakt. Dit is mogelijk het geval als er geen 500-foutpagina is geconfigureerd, of ook als de foutuitvoer is uitgeschakeld en de site dus geen foutmelding heeft om te vermelden.
Sommige browsers zoals Chrome en Internet Explorer geven hun eigen 500 error pagina weer wanneer ze de HTTP header error code ontvangen zonder dat de server inhoud geeft in de body van het antwoord:

500-fouten zijn vaak gekoppeld aan een probleem met een van de .htaccess-bestanden die werken op de URL, of een PHP-fout. Dus, door de foutweergave te activeren met de php.ini display_errors optie, zou je PHP fouten moeten zien verschijnen in plaats van de 500 fout.

Om te bepalen of je een 500-fout hebt, moet je kijken naar de HTTP-foutcode die de webserver terugstuurt naar je webbrowser. Dit kan worden vastgesteld via het tabblad "Netwerk" in de ontwikkelaarconsole van je browser:

Het eerste wat je moet doen is de logbestanden controleren die bij het HTTP-verzoek horen: het Apache logbestand en het PHP logbestand. De laatste 300 gebeurtenissen die u betreffen in het Apache logbestand kunt u raadplegen via het pictogram 'Errors' op uw cPanel-interface, terwijl het PHP logbestand meestal het bestand 'error_log' is dat zichtbaar is naast het betreffende PHP-bestand:

Het is echter mogelijk dat fouten niet worden weergegeven in de logs. Dit kan het gevolg zijn van een configuratie die voorkomt dat PHP-fouten worden weergegeven en/of gelogd. Lees meer.
Als je WordPress, Prestashop of Joomla gebruikt, is het echter goed mogelijk dat er geen wijzigingen zichtbaar zijn. In dat geval moet jede foutweergave activeren in hun respectievelijke configuratiebestanden.
De meeste CMS'en zoals WordPress hebben een intern foutverwerkingssysteem, dat voorkomt dat de PHP-parameters worden verwerkt en dat er actie wordt ondernomen afhankelijk van de fout die is opgetreden. Door de debugmodus te activeren, vraagt u dit interne foutbeheersysteem om fouten weer te geven en/of de verbositeit van de logbestanden te verhogen.
Om de debug-modus te activeren, kun je rechtstreeks verbinding maken met de"File Manager" die toegankelijk is via je cPanel-interface en het bijbehorende configuratiebestand bewerken om deze modus te activeren.
Als je site is gemaakt met WordPress, kun je de foutopsporingsmodus activeren vanuit het bestand"wp-config.php" in de root van je webhosting. Om dit te doen, verander je gewoon de constante"WP_DEBUG" in"true" in plaats van"false".
Als je wilt, kun je ook de constante WP_DEBUG_LOG toevoegen om fouten op te slaan in het bestand"wp-content/debug.log".
Je moet ook controleren of de constante"WP_DEBUG_DISPLAY" niet is gedefinieerd in je configuratiebestand. Als dat wel het geval is, moet je deze waarde ook op true zetten.
Het configuratiebestand zou er als volgt uit moeten zien:

Op Prestashop kunt u de foutopsporingsmodus activeren door naar het bestand"define.inc.php" in de map"config" te gaan.
U moet de "_PS_MOD_DEV_" verklaring wijzigen in"true" in plaats van"false". Indien nodig kun je ook de"_PS_DEBUG_PROFILING_" modus activeren, die je meer informatie zal geven.
Het configuratiebestand zou er als volgt uit moeten zien:

Voor Joomla kun je de debugmodus activeren door het configuration.php bestand te bewerken. In dit bestand moet je de"$debug" variabele veranderen in 1 om het te activeren. Je moet ook de variabele $error_reporting wijzigen in"maximum" zodat alle fouten worden weergegeven.
Het configuratiebestand zou er als volgt uit moeten zien:

Het is goed mogelijk dat je een ander CMS gebruikt. Om erachter te komen hoe je de debug modus activeert, kun je ook"CMS naam + Debug" intypen in de zoekmachine. Dit brengt je rechtstreeks naar een tutorial die uitlegt hoe je deze modus activeert.
Het is relatief eenvoudig om de oorsprong van een 500-fout te begrijpen, omdat het vaak dezelfde fouten zijn die terugkomen.
1. De eerste en meest voorkomende fout is de"Parse error". Dit wijst vaak op een syntaxisprobleem (een fout in de programmering van uw code). De fout wordt als volgt gedefinieerd:
Als we het voorbeeld nemen van het bestand index.php op onze Wordpress-site waar een puntkomma ontbreekt aan het einde van regel 17, dan is het webbestand waarin de fout zich voordoet als volgt:

De fout die zichtbaar is wanneer u naar de URL gaat, ziet er als volgt uit:

2. De fout"Parseerfout: syntaxisfout, onverwacht einde van bestand" geeft aan dat er iets lijkt te ontbreken aan het einde van het bestand.

In deze code ontbreekt bijvoorbeeld de accolade die het if statement afsluit.
3. De Parse Error: syntaxisfout, onverwacht (T_STRING), verwacht ','of'; ' is vaak te wijten aan een fout met betrekking tot het aanhalingsteken in je code.

In deze code ontbreekt de backslash op het woord"error", zoals in de volgende code, om het te laten werken:

4. Je kunt ook een fout zien van het type"Fatal Error". Dit is een van de ernstigste fouten die je kunt tegenkomen. Het zorgt er ook voor dat je script stopt. De definitie is als volgt:
Deze fout geeft vaak aan dat een functie niet is gedefinieerd, zoals in de volgende code:

Je ziet dan ook de volgende foutmelding: Fatal Error: Uncaught Error: Call to undefined function
Deze fout wordt vaak veroorzaakt door een van de volgende dingen:
5. Het is heel goed mogelijk dat je een"Fatal Error: cannot redeclare" foutmelding krijgt die aangeeft dat de functie een tweede keer is gedefinieerd. De code zou er als volgt uit kunnen zien:

Het is heel goed mogelijk om deze fout te vermijden door:
6. Je kunt de foutmelding"Fatal Error: allowed memory size exhausted" krijgen.
Dit geeft aan dat het PHP-script te veel RAM gebruikt en de maximaal toegestane waarde in PHP.INI overschrijdt. Dit is de waarde "memory_limit". Je kunt deze waarde wijzigen in de cPanel-formules. Als, ondanks het verhogen van de waarde naar een voldoende hoog niveau, het probleem blijft bestaan, kan het zijn dat een bewerking die veel geheugen verbruikt te vaak (of zelfs tot in het oneindige) wordt herhaald in je PHP script. Oneindige lussen zijn ook mogelijke oorzaken van dit soort fouten.
7. De fout"Fatal Error: Maximum execution time exceeded" betekent dat de uitvoeringstijd van je script is overschreden. U kunt de waarde"max_execution_time" wijzigen in uw PHP.INI configuratie. Merk echter op dat elk proces dat langer dan 490 seconden draait niet is toegestaan op onze cPanel shared hosting pakketten, maar bovenal dat als een pagina een hogere max_execution_time vereist, dit ook zou betekenen dat deze langzamer zou laden, wat over het algemeen niet wenselijk is. Als de pagina die deze foutmelding heeft gegenereerd veel gegevens verwerkt, raden we je aan om batchverwerking uit te voeren. In plaats van elke keer dat de pagina wordt geopend 1000 producten te verwerken, is het bijvoorbeeld beter om batches van 100 producten te verwerken met behulp van AJAX-verzoeken. En je krijgt een lagere TTFB (Time-To-First-Byte).
8. De fout"Fatal error: Uncaught Error: Call to undefined function mysql_connect()" betekent dat de module"mysql" niet is geladen op de PHP-versie die je gebruikt. De fout treedt op wanneer:
U kunt de PHP-versie eenvoudig wijzigen door naar"Selecteer een PHP-versie" te gaan op uw cPanel-interface.
9. De fout"Permission denied" betekent dat PHP niet de rechten heeft om toegang te krijgen tot een bepaald bestand of map. Deze fout komt vaak voor in de volgende vorm:
Waarschuwing file_put_contacts(/home/c123456/public_html/dossier/file.php): failed to open stream: Permission denied in /home/c123456/index.php op regel 20
In dit geval moet je de chmods op je bestanden en mappen controleren. In principe zijn de chmods als volgt:
10. De foutmelding"No such file or directory" geeft aan dat PHP een bestand moet opnemen dat niet aanwezig lijkt te zijn op je FTP-ruimte. De fout geeft het volgende weer:
Waarschuwing: require_once(/home/c123456/public_html/dossier/fichier.php): failed to open stream: No such file or directory in /home/c123456/public_html/index.php op regel 20
In dit geval moet u :
11. Mogelijk ziet u de foutmelding"Warning:session_start(): Cannot send session cookie headers already sent", wat aangeeft dat er al een stream is gegenereerd en dat het daarom niet meer mogelijk is om de functie"session_start" te gebruiken. Deze fout kan in de volgende vorm worden gezien:
Waarschuwing: session_start(): Cannot send session cookie - headers already sent by (uitvoer gestart bij /home/c123456/public_html/dossier/session.php:2 in /home/c123456/public_html/dossier/session.php op regel 20
De 3 mogelijke oorzaken van deze fout zijn als volgt:
Je kunt nu de reden voor een 500 of lege pagina fout achterhalen. Je kunt ook problemen met je website oplossen.
Aarzel niet om vragen te stellen en/of opmerkingen te plaatsen.
Beoordeel dit artikel :
2,5/5 | 2 mening
Dit artikel was nuttig voor jou ?
Ja
Geen
3mn lezen
Wordpress op cPanel: witte pagina of 500 foutmeldingen oplossen
1mn lezen
Hoe Apache en PHP logbestanden bekijken op cPanel
0mn lezen
Hoe corrigeer ik een foutmelding 403 Forbidden op cPanel?
0mn lezen
Hoe corrigeer ik een 404-fout op cPanel?