Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Traorelacina's avatar

Problème d'image avec laravel

Bonjour à tous,

Je rencontre un problème avec mon projet Laravel hébergé sur LwsPanel. Lorsque je téléverse une photo de profil, elle est bien stockée dans le dossier htdocs/projetrencontre/storage/app/public/photos, mais elle n'arrive pas dans le dossier htdocs/projetrencontre/public/storage/photos alors que tout fonctionne en local. Par conséquent, l'image de profil ne s'affiche pas et j'obtiens une erreur 404 dans les logs.

Voici un exemple de log d'erreur :Date : 10/02/2025 01:06:14 IP : 102.215.252.52 Requête : "GET /storage/photos/7O9FR1C4gGuxCdBx94Q1aUDrx6T9nqBiTRw8uLco.jpg HTTP/2.0" Code HTTP : 404 Référent : "https://secrebabi.com/profile" Agent utilisateur : « Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/133.0.0.0 Safari/537.36 »

0 likes
5 replies
RemiM's avatar

Est-ce que LWSPanel autorise les liens symboliques ?

Tu peux vérifier dans un premier temps si il existe via SSH:

ls -l htdocs/projetrencontre/public

Si tu ne vois pas storage -> ../storage/app/public, c'est que le lien symbolique n'existe pas.

Regarde au niveau de leur documentation la procédure pour la gestion de liens symboliques ou les alternatives qu'ils proposent.

Traorelacina's avatar

voilà le résultat :secre2531064@webdb24:~/htdocs/projetrencontre$ ls -l public total 36
drwxr-xr-x 3 secre2531064 secre2531064 4 Feb 9 23:50 build drwxr-xr-x 4 secre2531064 secre2531064 5 Feb 9 23:50 css -rw-r--r-- 1 secre2531064 secre2531064 0 Nov 20 09:15 favicon.ico
drwxr-xr-x 4 secre2531064 secre2531064 4 Feb 9 23:50 filament-assets -rw-r--r-- 1 secre2531064 secre2531064 17 Jan 25 20:41 hot
drwxr-xr-x 2 secre2531064 secre2531064 12 Feb 9 23:50 images -rw-r--r-- 1 secre2531064 secre2531064 1710 Nov 20 09:15 index.php
drwxr-xr-x 4 secre2531064 secre2531064 5 Feb 9 23:50 js -rw-r--r-- 1 secre2531064 secre2531064 72 Nov 20 12:05 mix-manifest.json
-rw-r--r-- 1 secre2531064 secre2531064 24 Nov 20 09:15 robots.txt
drwxr-xr-x 3 secre2531064 secre2531064 3 Feb 9 23:50 sounds drwxrwxrwx 6 secre2531064 secre2531064 7 Feb 9 23:50 storage drwxr-xr-x 4 secre2531064 secre2531064 4 Feb 9 23:50 vendor

RemiM's avatar

@Traorelacina Est-ce que tu as exécuté la commande suivante dans ton projet :

php artisan storage:link

C'est cette commande qui permet la création du lien symbolique.

Dans ton IDE, si c'est le cas, tu devrais voir une petite flèche à côté du dossier storage, indiquant qu'il s'agit bien d'un lien symbolique.

Traorelacina's avatar

@RemiM Effectivement vous pouvez le constater :secre2531064@webdb24:~/htdocs/projetrencontre$ php artisan storage:link

ERROR The [public/storage] link already exists.

RemiM's avatar

@Traorelacina

Comment vérifier si c'est un lien symbolique ?

Tu peux exécuter cette commande pour voir si public/storage est un lien symbolique :

ls -l public/

Si tu vois une ligne comme ceci :

storage -> ../storage/app/public

Cela signifie que public/storage est bien un lien symbolique.

Dans ce cas, rm -rf public/storage ne supprimera que le lien, pas les fichiers.

⚠️ Si c'est le cas :

1. Supprimer l'ancien lien symbolique corrompu :

rm -rf public/storage

2. Recréer le lien symbolique proprement :

php artisan storage:link

3. Vérifier si le lien est bien créé :

ls -l public/

Tu devrais voir une ligne comme ça :

storage -> ../storage/app/public

4. Tester l'accès aux images :

https://ton-site.com/storage/photos/mon-image.jpg

Si public/storage est un dossier et non un lien ?

Si la commande ls -l public/ ne montre pas un lien symbolique mais un dossier classique, alors faire rm -rf public/storage supprimera tous les fichiers à l'intérieur ! ⚠️

Dans ce cas, au lieu de supprimer, renomme-le d'abord pour éviter de perdre des fichiers :

mv public/storage public/storage_old

Puis recrée le lien symbolique avec :

php artisan storage:link

Et continue les étapes 3 et 4 indiquées plus haut.

1 like

Please or to participate in this conversation.