Comment configurer les autorisations de fichiers pour Laravel

Comment configurer les autorisations de fichiers pour Laravel

Problème

J'utilise le serveur Web Apache sur lequel le propriétaire du dossier est défini sur _WWW: _www. Je n'oublie pas de oublier les meilleures pratiques en ce qui concerne les autorisations de dépôt, par exemple lorsque je crée un nouveau projet Laravel 5.

Cela signifie-t-il qu'Apache a également besoin d'accès aux dossiers de stockage et des vendeurs ou simplement leur contenu actuel?

Laravel 5 nécessite un dossier de stockage pour être écrit. Bien qu'il ne soit pas la meilleure idée, j'ai établi l'autorisation 777 pour le dossier

La documentation officielle dit:

Laravel peut exiger que certaines autorisations soient configurées: les dossiers du stockage et le fournisseur nécessitent un accès en écriture par le serveur Web.

Je comprends que ce pourrait être beaucoup mieux si je change de propriétaire au lieu des autorisations.

Mais maintenant, j'ai des problèmes avec mon éditeur, me demandant toujours des mots de passe chaque fois que je veux enregistrer un fichier.

Quelle serait la meilleure façon de résoudre ces problèmes ?

Solution

Avant de donner la réponse finale, je veux juste dire l'évidence. Si vous souhaitez donner à n'importe quel dossier une autorisation 777, vous invitez à peu près tout le monde pour lire, écrire et exécuter des fichiers dans ce répertoire.

Il existe essentiellement deux façons de mettre en place votre propriété et vos autorisations:

  • Offrir la propriété
  • Faire du serveur Web le propriétaire de tous les fichiers.

Le second est la façon dont la plupart des gens font et c'est ce que Laravel suggère.

En supposant que www-data est votre utilisateur de serveur Web, vous pouvez exécuter:

Sudo Chown -r www-data: www-data / path / to / votre / laravel-directory

Et c'est bien, car votre serveur Web possédera des fichiers et peut exécuter. La mauvaise partie est que votre utilisateur enregistré (via FTP ou SSH) sera probablement un utilisateur différent, donc ce que vous voulez faire est d'ajouter cet utilisateur au groupe de servants:

sudo usermod -a -g www-data ubuntu

Bien sûr, cela suppose que votre serveur Web fonctionne en tant que www-data (la propriété de la propriété personnelle), et votre utilisateur est Ubuntu (c'est vagabond si vous utilisez Homestead).

Ensuite, une bonne pratique consiste à définir tous vos répertoires sur 755 et tous vos fichiers sur 644… définir les autorisations de fichiers à l'aide de la commande suivante:

sudo find / path / to / your / laravel-directory -Type f -exec chmod 644 \;

Définir les autorisations du répertoire:

sudo find / path / to / your / laravel-directory -type d -exec chmod 755 \;

Votre utilisateur en tant que propriétaire

Ce que je préfère, c'est posséder tous les répertoires et fichiers avec lesquels je travaille (cela facilite le travail avec tout), donc je fais:

sudo chown -r my-user: www-data / path / to / votre / laravel-directory

Ensuite, je peux simplement donner ces autorisations à moi-même et à l'utilisateur du serveur Web:

sudo find / path / to / your / laravel-directory -type f -exec chmod 664 \;
sudo find / path / to / your / laravel-directory -type d -exec chmod 775 \;

Une chose que vous ne voulez pas oublier est de donner au serveur Web accès aux fichiers de lecture et d'écriture dans le dossier Cache

Votre serveur Web devra également télécharger et stocker des données, alors assurez-vous de donner également les autorisations pour le dossier de stockage:

sudo chgrp -r www-data storage bootstrap / cache
Sudo Chmod -R UG + RWX Bootstrap / cache de stockage

Ce n'était pas si difficile, n'est-ce pas?