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):
$> sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload
Depois, criei outro index.php
arquivo na public/
pasta para descobrir quem estava executando minha versão do php-fpm e onde eu iria mudar isso:
<?php
phpinfo();
?>
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:
$> 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.
Por fim, dei as seguintes permissões para pastas:
sudo chmod -R 775 ./storage/
Agora, certifiquei-me de que eu era o proprietário das pastas usando um simples:
ls -al
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 um chown
comando recursivo no seu projeto para alterar as user: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 do www-data
alcance.
Meu projeto está configurado no meu diretório pessoal. No Ubuntu 16.04 e Laravel 5.5.