Eu sou bem novo em laravel, na verdade, e estou tentando criar meu primeiro projeto. por algum motivo, continuo recebendo esse erro (ainda nem comecei a codificar)
Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423
Eu li que isso tem algo a ver com permissões, mas chmod -R 775 storage
não ajudou em nada.
Respostas:
Nunca defina um diretório para 777 . você deve alterar a propriedade do diretório. defina o usuário atual com o qual você está conectado como proprietário e o usuário do servidor da web (www-data, apache, ...) como o grupo. Você pode tentar isso:
para definir a permissão do diretório, tente o seguinte:
Atualizar:
O usuário e o grupo do servidor da Web dependem do servidor da Web e do sistema operacional. para descobrir qual é o usuário e o grupo do servidor da Web, use os seguintes comandos. para uso do nginx:
ps aux|grep nginx|grep -v grep
para uso no apache:
ps aux | egrep '(apache|httpd)'
fonte
sudo chown -R {your current user}:www-data storage bootstrap/cache
chown: www-data: illegal group name
. Definir o diretório para 777 é a única coisa que funciona_www
tentar issosudo chgrp -R _www bootstrap/cache
. seria útil para dar uma olhada neste post: stackoverflow.com/a/6419695/2125114Nunca use o 777 para diretórios no servidor ativo, mas em sua própria máquina, às vezes precisamos fazer mais do que 775, porque
Significa
Se o seu servidor da Web não estiver sendo executado como Vagrant, ele não poderá gravá-lo, portanto, você tem 2 opções:
ou altere o grupo para o usuário do servidor da web, supondo que seja
www-data
:fonte
chown -R apache:apache laravelproject
chown -R vagrant:www-data storage
fiz isso por mim, obrigado.www-data: illegal group name
Para corrigir esse problema, você precisa alterar a propriedade do diretório para o usuário unix que o servidor da web usa.
Embora eu tenha criado o projeto na VM usando o usuário da VM, a pasta pertencia ao usuário no computador real; então, ao tentar
Agora está funcionando.
Obrigado a todos aqueles que me ajudaram a descobrir isso
EDITAR:
Na verdade, ele ainda não estava funcionando, ainda me deu um problema de "permissão negada".
Aqui está o que eu fiz, modifiquei meu arquivo Vagrant assim:
fonte
Também pode ser o SELinux. (Centos, RedHat)
Determine o status do SElinux no terminal:
Se o status estiver ativado, escreva o comando para desativar o SElinux
Ou você pode executar este comando
$ sudo setenforce 0
fonte
Você precisa ajustar as permissões de
storage
ebootstrap/cache
.cd
no seu projeto do Laravel.sudo chmod -R 755 storage
sudo chmod -R 755 bootstrap/cache
Você pode tentar o 777 se o 755 não funcionar. O 777 não é seguro!
Dependendo de como o servidor da Web estiver configurado, você poderá ser mais específico com suas permissões e conceder apenas ao usuário do servidor da Web. Google
WEB SERVER NAME Laravel file permissions
para mais informações.No momento da redação deste artigo, isso é para o Laravel 5.4
fonte
adicionar à
composer.json
Depois de
composer install
fonte
Execute os seguintes comandos e você pode adicionar
sudo
no início do comando depende do seu sistema:fonte
Para todos os usuários do Centos 7 em um contexto do Laravel, não há necessidade de desativar o Selinux, basta executar estes comandos:
Por fim, verifique se os hosts, ips e hosts virtuais estão todos corretamente para acesso remoto.
O Selinux pretende restringir o acesso até mesmo aos usuários root, para que apenas o material necessário possa ser acessado, pelo menos em uma visão geral, é segurança extra, desabilitar não é uma boa prática, existem muitos links para aprender sobre o Selinux, mas, para isso, caso, nem é necessário.
fonte
Se você usa o cmd
Se você usa a GUI
Primeiro, vá ao projeto e clique com o botão direito do mouse no armazenamento, verifique as propriedades e vá para a guia Permissões
Altere as permissões usando o código abaixo
Suas propriedades do arquivo podem ser
Em seguida, verifique suas configurações e execute o comando laravel que funcionará :)
fonte
No Laravel, você deve ativar a ACL
storage
e ocache
diretório para que o usuário do servidor da Web possa ler / gravar no diretório. Abra um novo terminal e execute o seguinte:Referências:
https://symfony.com/doc/3.4/setup/file_permissions.html#using-acl-on-a-system-that-supports-setfacl-linux-bsd
https://linux.die.net/man/1/setfacl
fonte
Pode ser tarde, mas pode ajudar alguém, alterar as permissões de diretório funcionou para mim.
Supondo que seu projeto Laravel esteja no
/var/www/html/
diretórioEm seguida, altere as permissões
storage/
ebootstrap/cache/
diretórios.fonte
Esta solução é específica para o laravel 5.5
Você precisa alterar as permissões para algumas pastas: chmod -R -777 storage / logs chmod -R -777 storage / framework para as pastas acima 775 ou 765 não funcionou no meu projeto
Além disso, a propriedade da pasta do projeto deve ser a seguinte (usuário atual) :( usuário do servidor da web)
fonte
Você poderia fazer:
fonte
Eu não estava muito interessado em alterar minhas permissões de pasta para 777. Veja como resolvi esse problema.
Primeiro, mudei o usuário que está executando o servidor da web na minha máquina local (eu executo o nginx, mas os princípios se aplicam a todos os lugares):
Depois, criei outro
index.php
arquivo napublic/
pasta para descobrir quem estava executando minha versão do php-fpm e onde eu iria mudar isso:Recarregando a página, descobri que
www-data
era o usuário (na seção ambiente). Eu também descobri que estava executando o php 7.1. Passei a mudar o usuário:Por fim, dei as seguintes permissões para pastas:
Agora, certifiquei-me de que eu era o proprietário das pastas usando um simples:
Se você definir os usuários do servidor e do php-fpm para si mesmo e as pastas pertencerem à raiz, por exemplo, você continuará enfrentando esse problema. Isso pode acontecer se você fez um
sudo laravel new <project>
como root. Nesse caso, certifique-se de usar umchown
comando recursivo no seu projeto para alterar asuser:group
configurações. Na maioria dos casos padrão,www-data
é a principal configuração do servidor e do php; nesse caso, é uma questão de garantir que a pasta não esteja fora dowww-data
alcance.Meu projeto está configurado no meu diretório pessoal. No Ubuntu 16.04 e Laravel 5.5.
fonte
tente isso
fonte
setenforce
mas, de qualquer forma, é errado desativar completamente o SELinux apenas para corrigir um problema de permissão.No meu caso particular, eu tive um arquivo de configuração gerado e armazenado em cache no
bootstrap/cache/
diretório, portanto, minhas etapas são:rm bootstrap/cache/*.php
Crie um novo
laravel.log
arquivo e aplique a atualização das permissões no arquivo usando:chmod -R 775 storage
fonte
(no Ubuntu ): Pode ser resolvido em 2 etapas simples:
E
fonte
Exclua
"/var/www/laravel/app/storage/logs/laravel.log"
e tente novamente:rm storage/logs/laravel.log
fonte
Teve este problema e encontrou isso e resolveu o problema.
fonte
Este erro pode ser corrigido desativando o Linux.
Verifique se ele foi ativado
sestatus
Você tenta..
setenforce 0
fonte
Para este erro:
Erro no manipulador de exceções: o fluxo ou o arquivo "/var/www/laravel/app/storage/logs/laravel.log" não pôde ser aberto: falha ao abrir o fluxo: permissão negada em / var / www / laravel / bootstrap / compiled .php: 8423
use este comando no terminal:
fonte
Corrigido meu problema com este comando no centos 7.6 Server
fonte