Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

Procédure

Een lege pagina of een 500-fout debuggen

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.

Wat is het verschil tussen een lege pagina en een 500 foutmelding?

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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.

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

Hoe kan ik zien of het een 500-fout is?

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

Hoe identificeer je de problemen die de 500-fout veroorzaken?

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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.

Hoe activeer je de foutopsporingsmodus van je site?

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.

Hoe activeer ik de foutopsporingsmodus op WordPress?

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

Hoe activeer ik de Debug-modus op Prestashop?

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

Hoe activeer ik de Debug-modus op Joomla?

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

Hoe activeer ik de debug modus op andere CMS?

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.

De verschillende PHP-fouten begrijpen

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:

  • Parse Error: definieert dat dit een fout in de code is.
  • Er wordt een bericht in het Engels weergegeven met meer informatie over het type fout
  • Het pad naar het bestand waarin de fout optreedt en de regel waarop de fout betrekking heeft.

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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.

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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:

  • Fatale fout: Dit bericht geeft aan dat de fout fataal is en ervoor zorgt dat je script stopt met draaien.
  • Bericht: Na de code "Fatale fout" volgt een bericht om de reden van de fout uit te leggen.
  • Toegangspad: het toegangspad en de regel die het probleem veroorzaakt, worden aangegeven.

Deze fout geeft vaak aan dat een functie niet is gedefinieerd, zoals in de volgende code:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

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:

  • Je hebt een typefout in de functie die je hebt gedefinieerd
  • Het PHP-bestand dat de functie bevat is niet geladen in je script
  • Als de functie deel uitmaakt van een PHP-extensie, is de PHP-extensie mogelijk niet geladen.

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:

Een 500-fout vaststellen en corrigeren op een site die wordt gehost op cPanel

Het is heel goed mogelijk om deze fout te vermijden door:

  • de naam van de opnieuw gedefinieerde functie te veranderen
  • Het kan ook een probleem met de namespace zijn. In dat geval moet je de namespace controleren en het volledige toegangspad tot de functie aangeven.

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:

  • PHP versie 7 of hoger wordt gebruikt, maar uw site niet compatibel is met deze versie
  • U gebruikt een PHP5-versie maar de module "MySQL" is niet geactiveerd.

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:

  • 644 : voor een bestand
  • 755 : voor een map

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 :

  • Controleren of het bestand in kwestie bestaat op je FTP-ruimte. Als dit niet het geval is, moet u het bestand opnieuw uploaden.
  • Controleer of u de juiste rechten hebt voor het bestand, d.w.z. CHMOD. Mappen zijn over het algemeen chmod 755 en bestanden zijn chmod 644.
  • Controleer of het pad in je PHP-script het juiste is.

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:

  • een richtlijn die tekst weergeeft voordat de functie wordt aangeroepen
  • Een probleem met de tekenset (met name BOM_UTF8). Deze fout treedt altijd op bij de eerste regel van je code
  • Tekens die onzichtbaar zijn op het scherm, maar wel aanwezig zijn in je bestanden. Met code-editors zoals Visual Studio Code kun je deze fouten zien.

Conclusie

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 ?

Article utileJa

Article non utileGeen

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Vergelijkbare artikelen

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?


Stel een vraag aan het LWS-team en de gemeenschap