web-dev-qa-db-fra.com

Laravel 4: Impossible d'ouvrir le flux: autorisation refusée

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?

34
Bryan P

Le répertoire storage doit être accessible en écriture à l'utilisateur du serveur Web.

45
Franz

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.

52
François

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.

14
user2861062

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.

5
user3670777

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!

0
ivahidmontazer

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.

0
Ajnas Kt