Laravel (PHP)

Laravel fonctionne sur Kavio, avec deux réglages à faire vous-même.

1. Variables d'environnement

Dans le panneau de configuration à l'import (ou dans la section Variables d'environnement de la page projet), déclarez :

VariableValeurPourquoi
APP_KEYune clé générée localement avec php artisan key:generate --show (commence par base64:)Requise par Laravel, absente du dépôt par convention. Doit être définie avant le premier déploiement : Kavio met en cache votre configuration au moment du build, donc une clé ajoutée après coup n'est prise en compte qu'au déploiement suivant.
APP_ENVproductionSans elle, l'app tourne en environnement local — plus lent, et pas ce que vous voulez servir à vos visiteurs.

Vous n'avez rien à déclarer pour le point d'entrée (public/) : contrairement à Symfony, Kavio détecte Laravel automatiquement et sert le bon dossier sans configuration.

2. Base de données SQLite : créez-la et migrez-la au build

Par convention, Laravel ne commit jamais database/database.sqlite (il est dans .gitignore), et Kavio n'exécute aucune migration de lui-même. Sans action de votre part, ce fichier n'existe pas du tout une fois déployé.

⚠️ Ce point concerne toutes les apps Laravel, pas seulement celles qui utilisent une base de données pour leurs propres données : par défaut, Laravel stocke les sessions et le cache dans la base (SESSION_DRIVER=database, CACHE_STORE=database). Comme une session démarre sur n'importe quelle requête web, une base absente ou non migrée fait planter toutes vos pages, même celles qui n'affichent aucune donnée.

La solution, dans package.json :

{
    "scripts": {
        "build": "vite build && touch database/database.sqlite && php artisan migrate --force --no-interaction"
    }
}

Kavio lance npm run build automatiquement à chaque déploiement, juste après l'installation des dépendances PHP — artisan est donc déjà disponible à ce moment-là.

Si vous utilisez MySQL ou PostgreSQL plutôt que SQLite, ignorez ce point : déclarez simplement DB_CONNECTION et les variables de connexion correspondantes, et gardez php artisan migrate --force --no-interaction dans le script build.

Ce qui n'est pas nécessaire

Vous n'avez rien à faire concernant :

  • PORT — automatiquement imposé par la plateforme, votre app n'a pas à le déclarer ni à le lire.
  • Le CSS et le JS (Vite) — vite build fait déjà partie du chemin npm standard que Kavio exécute toujours, aucun contournement nécessaire.
  • Les dossiers storage/ et bootstrap/cache/ — Kavio les crée et les rend inscriptibles automatiquement au build, puis exécute config:cache, event:cache, route:cache et view:cache à votre place.
  • Le cache, les sessions et les logs (storage/framework/, storage/logs/) — le disque applicatif est inscriptible sur Kavio, Laravel y écrit normalement.