Procédure
Sur LWS Panel, le dossier d'un sous-domaine est imposé : /htdocs/app.exemple.com/ pour app.exemple.com, et il ne peut pas pointer vers le dossier public/ de Laravel. Pour publier l'application Laravel que vous avez développée, déposez tout le projet dans ce dossier, ajoutez à sa racine le fichier .htaccess qui envoie les visiteurs vers public/, installez les dépendances avec Composer dans le Terminal, puis réglez le fichier .env. Cette aide détaille ces étapes et la recherche de la cause d'une erreur 500.
Dans le tableau de bord de votre hébergement, rubrique « Gestion du domaine », ouvrez « Sous domaines ». Dans « Sous-domaine à ajouter », tapez seulement la partie qui précède le domaine (par exemple app), puis cliquez sur « + ajout ». Le certificat SSL du sous-domaine se génère en 3 minutes environ : un compte à rebours « Temps restant » s'affiche.
La colonne « Répertoire » indique le dossier du sous-domaine : app.exemple.com, c'est-à-dire /htdocs/app.exemple.com/. Aucun champ ne permet de choisir un autre dossier. Le détail de cet écran est dans l'aide Comment créer des sous-domaines sur le LWS Panel ?

Déposez le projet complet (dossiers app, bootstrap, config, public, routes, storage, fichiers artisan et composer.json…) directement dans /htdocs/app.exemple.com/. Le fichier index.php de Laravel doit se trouver à l'emplacement /htdocs/app.exemple.com/public/index.php.
Avec le Gestionnaire de fichiers (rubrique « Fichiers »), envoyez une archive .zip du projet par « Charger » (1 125 Mo au plus par fichier), sélectionnez-la puis cliquez sur « Extraire ». Pour un très grand nombre de fichiers, un logiciel FTP convient mieux. Si votre projet est sur Git, vous pouvez aussi le cloner depuis le Terminal : voir Comment utiliser GIT avec le terminal Web sur mon hébergement mutualisé LWS ?
Le dossier du sous-domaine ne pouvant pas pointer vers public/, c'est un fichier .htaccess placé à la racine de /htdocs/app.exemple.com/ (à côté du dossier public, pas dedans) qui redirige les visiteurs vers public/. Son contenu est donné dans l'aide Installer Laravel sur un hébergement mutualisé LWS, partie « Comment bien configurer son site Laravel ? ».
Dans le Gestionnaire de fichiers, ouvrez le dossier du sous-domaine, cliquez sur « + Fichier » et nommez-le .htaccess. Cliquez ensuite sur son nom pour l'ouvrir dans l'« Editeur de code », collez le contenu, puis cliquez sur « Enregistrer les modifications ».
Ne modifiez pas le fichier .htaccess qui se trouve déjà dans public/ : il est fourni avec Laravel et envoie les requêtes vers index.php.
Dans la rubrique « Base de données & PHP », ouvrez « Configuration php ». Dans l'onglet « Installation et sélection de PHP », vérifiez que la version voulue est cochée (par exemple « PHP 8.5 + Ioncube (recommended) »). Dans l'onglet « Configuration PHP par sites », choisissez ensuite cette version sur la ligne de votre sous-domaine, puis cliquez sur « Enregistrer ».

Si un bandeau indique « Attention vous avez déclaré un/des fichier(s) .htaccess, ce qui surpasse la version PHP affichée dans votre espace client », la version de PHP de ce dossier vient d'une ligne du fichier .htaccess dont le chemin est affiché : c'est cette ligne qu'il faut modifier. Plus de détails dans Comment configurer PHP sur mon hébergement ?
Ouvrez « Logiciels » puis « Terminal ». La console démarre dans le dossier ~/htdocs. Placez-vous dans le dossier du sous-domaine, affichez la version de PHP de la console, puis installez les dépendances du projet :
cd app.exemple.com
php -v
composer install
La version affichée par php -v doit convenir à votre version de Laravel. Sinon, changez la version de PHP du Terminal en suivant Comment changer la version PHP Terminal Web LWS Panel.
Le fichier .env se trouve à la racine du projet (/htdocs/app.exemple.com/.env), pas dans public/. Ouvrez-le dans le Gestionnaire de fichiers et réglez au moins ces lignes avec les valeurs de votre site :
APP_DEBUG=false
APP_URL=https://app.exemple.com
DB_CONNECTION=mysql
DB_HOST=203.0.113.10
DB_DATABASE=nom_de_la_base
DB_USERNAME=utilisateur_de_la_base
DB_PASSWORD=mot_de_passe_de_la_base
Les valeurs de la base se lisent dans « Base de données & PHP » puis « MySql & PhpMyadmin », sur la ligne de la base : colonne « Base » pour DB_DATABASE, « Utilisateur » pour DB_USERNAME et « Ip serveur » pour DB_HOST (une adresse IP, pas localhost). Le mot de passe n'est pas affiché : il vous a été envoyé par e-mail à la création de la base. S'il est perdu, changez-le par le menu « ⋮ » puis « Changer mot de passe ».
Dans le fichier .env d'un projet Laravel 13 neuf, la ligne DB_CONNECTION vaut sqlite et les autres lignes DB_ commencent par un # : retirez ces # et indiquez mysql. Pour l'envoi d'e-mails, les lignes MAIL_ sont expliquées dans l'aide Installer Laravel sur un hébergement mutualisé LWS.
Si la ligne APP_KEY= est vide, générez la clé de l'application dans le Terminal, toujours dans le dossier du sous-domaine. Ne la régénérez pas si elle est déjà remplie.
php artisan key:generate
Créez ensuite les tables de la base, puis mettez la configuration en cache :
php artisan migrate
php artisan config:cache
Après chaque modification du fichier .env, relancez php artisan config:cache : une fois la configuration en cache, Laravel ne relit plus le fichier .env.
Ouvrez https://app.exemple.com dans votre navigateur : la page d'accueil de votre application s'affiche, avec le cadenas du certificat SSL. Parcourez quelques pages et vérifiez que la mise en forme et les images s'affichent.
Vérifiez aussi que les fichiers du projet ne sont pas lisibles depuis Internet : l'adresse https://app.exemple.com/composer.json doit afficher une page d'erreur de votre application, et non le contenu du fichier. Si le contenu s'affiche, le fichier .htaccess de l'étape 3 est absent ou mal placé : corrigez-le tout de suite.
Suivez les points dans l'ordre et arrêtez-vous dès que l'erreur disparaît.
Dans la rubrique « Base de données & PHP », cliquez sur « Logs Apache PHP ModSecurity » : l'outil LWS Log Analyzer s'ouvre. Ouvrez l'onglet « Erreurs PHP », choisissez votre sous-domaine dans la liste des domaines et la période, puis le filtre « Fatal ». Les colonnes « FICHIER PHP », « LIGNE » et « MESSAGE » donnent la cause, et le bouton « ✨ Diagnostic IA » l'explique en langage simple.

Laravel écrit ses propres erreurs dans le fichier storage/logs/laravel.log du projet. Ouvrez-le dans le Gestionnaire de fichiers et regardez les dernières lignes, à l'heure de l'erreur. S'il n'y a rien à cette heure-là, fiez-vous à l'onglet « Erreurs PHP » du point précédent.
APP_KEY= vide) : lancez php artisan key:generate dans le Terminal, dans le dossier du sous-domaine.storage et bootstrap/cache non accessibles en écriture : Laravel doit pouvoir y écrire. Vérifiez leurs droits avec le bouton « Permissions » du Gestionnaire de fichiers.vendor absent : lancez composer install dans le dossier du sous-domaine (étape 5).DB_HOST, DB_DATABASE, DB_USERNAME et DB_PASSWORD avec la ligne de la base dans « MySql & PhpMyadmin », puis relancez php artisan config:cache.Pour les autres causes d'erreur 500, consultez Comment corriger une erreur 500 sur votre site avec LWS Panel.
Non. Sur LWS Panel, le dossier d'un sous-domaine porte son nom complet (/htdocs/app.exemple.com/) et l'écran « Sous domaines » ne permet pas d'en choisir un autre. C'est pourquoi le fichier .htaccess de l'étape 3 envoie les visiteurs vers public/.
Ces commandes se lancent dans le Terminal du LWS Panel (« Logiciels » puis « Terminal »), ou en SSH depuis votre ordinateur à partir de la formule Starter. Si le Terminal affiche « Pour bénéficier de cet outil il est nécessaire de passer sur une formule supérieure », il n'est pas inclus dans votre formule. La formule Domaine n'a ni PHP ni base de données : Laravel n'y fonctionne pas.
La configuration est en cache : relancez php artisan config:cache dans le dossier du sous-domaine, ou videz ce cache avec php artisan config:clear.
Récupérez les modifications depuis le Terminal, comme expliqué dans Comment utiliser GIT avec le terminal Web sur mon hébergement mutualisé LWS ?, puis relancez composer install, php artisan migrate et php artisan config:cache dans le dossier du sous-domaine.