Je n'étais pas trop désireux de changer mes autorisations de dossier en 777. Voici comment j'ai résolu ce problème.
Tout d'abord, j'ai changé l'utilisateur qui exécute le serveur Web sur ma machine locale (j'exécute nginx, mais les principes s'appliquent partout):
$> sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload
Ensuite, j'ai créé un autre index.php
fichier dans le public/
dossier pour savoir qui exécutait ma version php-fpm et où j'allais changer cela:
<?php
phpinfo();
?>
En rechargeant la page, j'ai découvert que www-data
c'était l'utilisateur (sous la section environnement). J'ai également découvert que j'utilisais php 7.1. J'ai procédé au changement d'utilisateur:
$> sudo vim /etc/php/7.0/fpm/pool.d/www.conf
#Look for www-data or the following variables: user, group, listen.user, listen.group.
Enfin, j'ai donné les autorisations suivantes aux dossiers:
sudo chmod -R 775 ./storage/
Maintenant, je me suis assuré que j'étais le propriétaire des dossiers en utilisant un simple:
ls -al
Si vous définissez le serveur et les utilisateurs php-fpm sur vous-même et que les dossiers appartiennent à root par exemple, vous continuerez à rencontrer ce problème. Cela peut arriver si vous avez effectué un sudo laravel new <project>
fichier en tant que root. Dans ce cas, assurez-vous d'utiliser une chown
commande récursive sur votre projet pour modifier les user:group
paramètres. Dans la plupart des cas par défaut, www-data
est le paramètre principal pour le serveur et php, dans ce cas, il s'agit de s'assurer que le dossier n'est pas hors de www-data
portée.
Mon projet est installé dans mon répertoire personnel. Sur Ubuntu 16.04 et Laravel 5.5.