Je rencontre un problème pour configurer Laravel 4. Je rencontre cette erreur en ouvrant la page d'index:
file_put_contents (/Users/laravel/app/storage/meta/services.json) [function.file-put-contents]:
impossible d'ouvrir le flux: autorisation refusée.
Qu'est-ce que j'oublie ici?
Le répertoire storage
doit être accessible en écriture à l'utilisateur du serveur Web.
Je pense que chmod -777 est une mauvaise pratique.
Pour résoudre le problème des autorisations sur Laravel, je l’ai fait (avec l’utilisateur root):
cd app/
chown -R www-data:www-data storage
cd storage/
find . -type d -exec chmod 775 {} \; && find . -type f -exec chmod 664 {} \;
Et toujours dans le répertoire app/storage:
chown your_user:user_group .gitignore cache/.gitignore logs/.gitignore meta/.gitignore sessions/.gitignore views/.gitignore
Maintenant, quittez l'utilisateur root, et c'est bon.
EDIT: c'était pour Laravel4. Cela ne fonctionne pas pour Laravel5 à cause d'une structure différente.
Il vaut mieux que vous ne changiez pas les autorisations, vous devriez simplement changer le owner:group
du dossier de stockage en celui du owner:group
d’Apache en utilisant chown
, ceci est plus compliqué mais plus sécurisé et peut trouver cela dans le httpd.conf
MAMP:
/Applications/MAMP/conf/Apache/httpd.conf
XAMMP:
/Applications/XAMPP/xamppfiles/etc/httpd.conf
Ouvrez le fichier httpd.conf avec votre éditeur préféré, puis recherchez User/Group
. Après la recherche, vous verrez ci-dessous la ligne en surbrillance que vous avez recherchée:
User someuser
Group somegroup
Une fois que vous connaissez déjà l'utilisateur et le groupe, accédez à votre répertoire laravel, puis exécutez la commande chown
:
chown -R someuser:somegroup app/storage
P.S: Si vous obtenez une erreur quelque chose de permission en faisant chown
, essayez ceci:
Sudo chown -R someuser:somegroup app/storage
Il vous demandera alors votre mot de passe alors saisissez-le ensuite.
Je viens de rencontrer ce problème sur centos 7. Le bloqueur n’était pas un droit de dossier, mais plutôt la politique sélinux qui bloquait nginx/php pour accéder à/var/www. Par conséquent, si ce qui précède ne fonctionne pas, essayez de désactiver selinux afin de vérifier si vous pouvez réexécuter le programme composer sans problèmes de permission.
Dans mon cas, cette erreur a été générée:
fopen (php: // stdout): impossible d'ouvrir le flux: l'opération a échoué
j'utilise un hôte virtuel dans Wamp . J'ai donc ajouté cette ligne à mon bloc <VirtualHost>
-> <Directory>
dans le fichier httpd-vhosts.conf
:
Require all granted
et mon bloc est:
<VirtualHost *:80>
ServerName laravel
DocumentRoot d:/wamp/www
<Directory "d:/wamp/www/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
alors le problème est résolu!
Si vous utilisez Apache sur Ubuntu, les dossiers de stockage et d'amorçage/cache doivent être accessibles en écriture par l'utilisateur du serveur Web.
Sudo chgrp -R www-data storage bootstrap/cache
Sudo chmod -R ug+rwx storage bootstrap/cache
Cela permettra aux utilisateurs du serveur Web d’obtenir des autorisations d’écriture sur ces dossiers.