Laravel- en PHP-fouten
Laravel 500-fout na een deploy: oorzaken en oplossing
Het korte antwoord
Werkt het bij u lokaal en klapt het op de server? Dat is het klassieke deploy-gat. Zelden is de code de boosdoener, bijna altijd de omgeving. Het logboek zegt welk deel, en debugmodus aanzetten hoeft daarvoor niet.
- Back-up vóór elke wijziging
- Vaste prijs vooraf
- Op afstand, overal ter wereld
- Gratis diagnose
Laravel verbergt details voor bezoekers met opzet, dus de pagina zelf vertelt bijna niets. Het antwoord staat in storage/logs/laravel.log of het PHP-foutenlogboek en is meestal een van een korte lijst: .env, rechten, afhankelijkheden, migraties, PHP-versie of cache. Dezelfde aanpak werkt voor eigen PHP-code en andere frameworks. Veilig herstellen betekent eerst het logboek lezen en alleen aanpassen wat het aanwijst.
Herkenbaar?
Zo uit een Laravel 500-fout zich na een deploy
- Een lege pagina, een kale “500 Server Error” of “Whoops, looks like something went wrong”
- De site werkt lokaal of op de testomgeving, maar niet op de live server
- Foutmeldingen zoals “No application encryption key has been specified” of “Class not found”
- U ziet een mappenoverzicht, een 403 of de inhoud van index.php in plaats van de site
- Alleen pagina’s die de database of bestandsuploads gebruiken geven een fout
Oorzaken
Wat veroorzaakt een Laravel 500-fout na een deploy?
.env of APP_KEY ontbreekt
Zonder .env-bestand of geldige APP_KEY kan Laravel sessies en cookies niet ontsleutelen of geen verbinding maken met de database, en faalt elk verzoek.
Storage en cache niet beschrijfbaar
De gebruiker van de webserver kan niet schrijven in storage of bootstrap/cache, waardoor logboeken, sessies, gecompileerde views en cachebestanden niet kunnen worden aangemaakt.
Afhankelijkheden niet geïnstalleerd
De vendor-map ontbreekt of is verouderd omdat composer install niet is uitgevoerd, of is geïnstalleerd voor een andere PHP-versie.
Migraties niet uitgevoerd
De nieuwe code verwacht tabellen of kolommen die nog niet bestaan, dus queries falen zodra die pagina’s worden geopend.
PHP-versie of extensie past niet
De server draait een oudere of nieuwere PHP-versie dan het project nodig heeft, of mist een extensie zoals mbstring, intl, gd of pdo_mysql.
Verouderde cache of verkeerde document root
Een gecacht config- of routebestand bevat nog oude waarden, of de webserver wijst naar de hoofdmap van het project in plaats van naar de map public.
Zelf proberen
Een Laravel 500-fout zelf onderzoeken
Hebt u of uw ontwikkelaar SSH-toegang, dan laten deze controles vaak de oorzaak zien.
- 1 Lees de laatste regels van storage/logs/laravel.log en van het PHP- of webserverlogboek. De eerste foutmelding noemt meestal het probleem.
- 2 Controleer of er op de server een .env-bestand staat met de juiste productiewaarden en een APP_KEY. Genereer alleen een nieuwe sleutel bij een nieuwe installatie, want een andere sleutel maakt bestaande versleutelde gegevens en sessies onbruikbaar.
- 3 Voer composer install --no-dev --optimize-autoloader uit met dezelfde PHP-versie die de webserver gebruikt.
- 4 Voer php artisan migrate --force uit nadat u hebt gecontroleerd dat er een verse back-up van de database is.
- 5 Leeg en herbouw de caches met php artisan optimize:clear, daarna php artisan config:cache en php artisan route:cache.
- 6 Zorg dat storage en bootstrap/cache beschrijfbaar zijn voor de gebruiker van de webserver, zonder het hele project voor iedereen beschrijfbaar te maken.
- 7 Controleer of de document root naar de map public wijst, en of APP_DEBUG op false en APP_ENV op production staat op de live site.
Onze aanpak
Zo verhelpen wij een Laravel 500-fout
-
1
U beschrijft de deploy
Vertel wat er is uitgerold en wat u nu ziet. We laten weten welke toegang we nodig hebben.
-
2
Back-up vóór elke wijziging
We kopiëren eerst de huidige code, de .env en de database, zodat de server altijd naar de huidige toestand terug kan.
-
3
We lezen de logboeken en geven een prijs
We volgen de fout in de Laravel- en serverlogboeken, vergelijken de omgeving met wat het project nodig heeft en sturen een vaste prijs.
-
4
We repareren, testen en rapporteren
Na uw akkoord herstellen we de omgeving of de code, testen de belangrijkste routes en sturen een kort verslag, met tips voor veiligere deploys.
Wat we nodig hebben
Wat wij van u nodig hebben
- SSH- of SFTP-toegang tot de server, of een hostingpaneel
- Toegang tot de repository of deploytool, als u die gebruikt
- Toegang tot de database, of een recente databaseback-up
- Wat er is uitgerold, wanneer, en of het op een andere omgeving wel werkt
We gebruiken per klant een aparte SSH-sleutel en de minimale toegang die nodig is. U kunt onze sleutel verwijderen zodra we klaar zijn.
Wat wij niet kunnen oplossen
We kunnen geen storingen bij uw host oplossen, geen servers of repositories waar we geen toegang toe krijgen, en geen beperkingen van gedeelde hosting die een vereiste PHP-versie of extensie tegenhouden. Grote fouten in de applicatie die nieuwe functies of een herontwerp vragen, vallen buiten een reparatie tegen vaste prijs. Is dat zo, dan zeggen we dat snel en leggen we uw mogelijkheden uit.
Prijs
Prijs en wat er daarna gebeurt
-
1
Gratis diagnose
We zoeken de oorzaak en vertellen u wat er mis is.
-
2
Vaste prijs
U krijgt een prijs en een tijdsinschatting. Zonder uw ja begint er niets.
-
3
Opgelost en gerapporteerd
We herstellen het, testen het en sturen een kort verslag.
Vanaf €295 excl. btw
Vaste prijs, afgesproken voordat we beginnen
Is het dringend? Zeg het in het formulier of in de chat. We beginnen zo snel als we kunnen en geven u bij de offerte een realistische tijdsinschatting. Kost voorrang extra, dan ziet u dat in de offerte voordat u akkoord gaat.
Laat het oplossenVragen?
Veelgestelde vragen over de Laravel 500-fout
Ook bekeken
Gerelateerde problemen
HTTP-fout 500
Een 500 Internal Server Error is een algemene HTTP-statuscode. Hij betekent dat de server bij het opbouwen van uw pagina op een onverwacht p...
Lees meer →Kapot na een update
Een website die direct na een update kapotgaat, heeft meestal een versieconflict: een plugin, thema of stuk maatwerkcode dat niet werkt met...
Lees meer →Databasefout
“Error establishing a database connection” betekent dat de code van uw site draait, maar de database met uw inhoud niet kan bereiken of er n...
Lees meer →Laatst bijgewerkt:
Aanvraag
Vertel ons wat er mis is
Beantwoord een paar korte vragen. U krijgt een vaste prijs voordat we iets doen.
Bedankt voor uw aanvraag!
We nemen spoedig contact met u op
Er is een fout opgetreden!
Probeer het alstublieft opnieuw.