Bonjour, je rencontre un problème sur mon vps sous centOs.
Je travaille en local avec homestead, l'upload de fichier fonctionne très bien. Mais sur mon serveur, a chaque fois le formulaire me renvoit l'erreur "The file failed to upload".

J'ai mis les permissions pour le dossier de storage, si je ne dis pas de bêtise avant d'ajouter une fonctionnalité ça fonctionnait pourtant bien. Mais là impossible de faire quoi que ce soit.

J'ai pas réellement de code à vous montrer, étant donner que le code fonctionne.

Ai-je oublier quelque chose ?

5 réponses


bonjour,
Sans données je ne sais pas t'aider,
pourrais tu regarder dans les logs de ton serveur, vu que je n'ai jamais utilisé centOS, je te dirais d'aller voir tout les logs dans /var/log/.... et de rechercher les logs de php :-)

Es tu sur que ce n'est pas un problème de configuration ? Par exemple, avec le storage de laravel, il faut faire un lien symbolique vers le dossier Public. (php artisan storage:link) (!! cette commande ne marche pas avec homestead, il faut faire autrement le lien symbolique !! )

Bonne journée !
JC

Chelios
Auteur

Bonjour, oui j'ai effectivement utiliser la commande pour créer le lien symbolique.

J'ai bien des erreurs dans mes logs php, voilà l'erreur
File upload error - unable to create a temporary file in Unknown on line 0

Je t'avoue que je ne comprends pas pourquoi.

Bonne journée.

Un petit coup de chmod 775 -R storage && chown -R www-data:www-data storage sur le vps devrait suffire

edit : je ne sais pas si centOs accepte le && donc fais le en commande séparée et en sudo (sinon peux-tu retourner ce que revoi la commande ls -al dans le dossier root du laravel et celui du storage?

Salut,
si la proposition de @helixar ne marche pas,
a mon avis, ça vient du fait que laravel veut insérer ton fichier dans le dossier plublic qui est un lien symbolique .
Fait ceci (la reponse a +/- 30 likes ): https://stackoverflow.com/questions/39496598/laravel-5-3-storagelink-symlink-protocol-error
et comme explique dans cette réponse, pour créer le lien symbolique il faut faire cette commande :
ln -sr storage/app/public public/storage
à partir de la racine du projet dans ton environnement de base (autrement dit, sans être connecté en ssh )

bonne après midi
jc

ah c'est parce que le lien a été créer en local donc le chemin pris en compte est celui du local? très bonne déduction, je le fais toujours sur la machine de prod par automatisme du coup j'y ai pas pensé.