Skip to content

Instantly share code, notes, and snippets.

@igoralves1
Last active March 12, 2017 04:37
Show Gist options
  • Save igoralves1/0e00a9a5f438d3aa3d91271abcb6aa0b to your computer and use it in GitHub Desktop.
Save igoralves1/0e00a9a5f438d3aa3d91271abcb6aa0b to your computer and use it in GitHub Desktop.
#Erro no browser
The test.app page isn’t working
dref.app is currently unable to handle this request.
HTTP ERROR 500
#===================================================
#Verificando o erro no arquivo /var/log/nginx$ test.app-error.log
ila@ig:/var/log/nginx$ gedit test.app-error.log
2017/03/11 15:10:08 [error] 9306#9306: *1 FastCGI sent in stderr:
"PHP message: PHP Fatal error:
Uncaught UnexpectedValueException: The stream or file "/home/ila/vhosts/test.app/storage/logs/laravel.log"
could not be opened: failed to open stream: Permission denied in
/home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107
Stack trace:
#0 /home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\StreamHandler->write(Array)
#1 /home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Logger.php(337): Monolog\Handler\AbstractProcessingHandler->handle(Array)
#2 /home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Logger.php(616): Monolog\Logger->addRecord(400, Object(UnexpectedValueException), Array)
#3 /home/ila/vhosts/test.app/vendor/laravel/framework/src/Illuminate/Log/Writer.php(203): Monolog\Logger->error(Object(UnexpectedValueException), Array)
#4 /home/ila/vhosts/test.app/vendor/laravel/framework/src/Illuminate/Log/Writer.php(114): Illuminate\Log\Writer->write...
PHP message: PHP Fatal error:
Uncaught UnexpectedValueException: The stream or file "/home/ila/vhosts/test.app/storage/logs/laravel.log"
could not be opened: failed to open stream: Permission denied in
/home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107
Stack trace:
#0 /home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\StreamHandler->write(Array)
#1 /home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Logger.php(337): Monolog\Handler\AbstractProcessingHandler->handle(Array)
#2 /home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Logger.php(616): Monolog\Logger->addRecord(400, Object(Symfony\Component\Debug\Exception\FatalErrorException), Array)
#3 /home/ila/vhosts/test.app/vendor/laravel/framework/src/Illuminate/Log/Writer.php(203): Monolog\Logger->error(Object(Symfony\Component\Debug\Exception\FatalErrorException), Arr
============================================================================================
O erro não é muito claro...
Diz que o arquivo "/home/ila/vhosts/test.app/storage/logs/laravel.log" não pode ser aberto!
Não pode ser lido?
O que não é verdade pois usuários u(User), grupos g(Group) e outros o(others) podem todos lêr
r(Read) ==> drwxrwxr-x.
O fato é que ANTES da primeira vez que o Laravel é carregado NÃO EXISTE O ARQUIVO
"/home/ila/vhosts/test.app/storage/logs/laravel.log", pq alguém (que não é o USER ou o GROUP)
NÃO CONSEGUIU CRIÁ-LO.
Aguma função que se encontra em
"/home/ila/vhosts/test.app/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107"
NÃO ESTÁ CONSEGUINDO ABRIR SIMPLISMENTE PQ ELE NÃO EXISTE (NÃO FOI CRIADO).
RESULTADO - Entáo parece que a manenira lógica de resolver o erro é permitir que OUTROS possam
ter direito de escritura w(write) no folder "/home/ila/vhosts/test.app/storage/...", então o arquivo
poderá ser criado por alguma fução e lido por ".../StreamHandler.php:107".
O fato é: quem é esse "outro" o(Others) que está usando o laravel e pq o Usuário do meu sistema
aqui no caso ila ou o grupo www-data do NGINX não consegue fazer a tarefa, já que ele possuem permissão
de leitura r(Read), escritura w(Write) e execução x(Execute)?
Uma resposta imediata MAS NÃO LÓGICA seria atribuir permissão rwx para o(Others)
Assim: ila@ig:~/vhosts/test.app(master)$ sudo chmod guo+w -R storage/ transforma a pasta
".../storage/..." em rwx rwx rwx, o que parece comprometer a segurança da aplicação Laravel.
============================================================================================
ila@ig:~/vhosts/test.app/storage(master)$ ll
total 20
drwxrwxrwx 5 ila www-data 4096 Mar 11 13:43 ./
drwxr-xr-x 15 ila www-data 4096 Mar 11 14:48 ../
drwxrwxr-x 3 ila www-data 4096 Mar 11 13:43 app/
drwxrwxr-x 5 ila www-data 4096 Mar 11 13:43 framework/
drwxrwxr-x 2 ila www-data 4096 Mar 11 13:43 logs/
#Dar permissão de escrever w(Write) para g(grupo) u(user) o(other) para o diretório storage/ de forma recursiva -R
ila@ig:~/vhosts/test.app(master)$ sudo chmod guo+w -R storage/
#Verificando
ila@ig:~/vhosts/test.app/storage(master)$ ll
total 20
drwxrwxrwx 5 ila www-data 4096 Mar 11 13:43 ./
drwxr-xr-x 15 ila www-data 4096 Mar 11 14:48 ../
drwxrwxrwx 3 ila www-data 4096 Mar 11 13:43 app/
drwxrwxrwx 5 ila www-data 4096 Mar 11 13:43 framework/
drwxrwxrwx 2 ila www-data 4096 Mar 11 13:43 logs/
Aqui nesse ponto já não existe mais o erro pois o arquivo "laravel.log"
já foi criado por alguém o(Others) e lido por algum usuário que agora
não sei mais se é ila ou www-data ou others.
NOTE que haverá outros erros semelhantes (Permission denied) se em algum momento
algum usuário não conseguir ler, criar ou executar arquivos dentro de pastas ou arquivos.
Nesse ponto sobra 3 opções:
1-Verificar o folder envolvido no erro e garantir permissão 777 para ele,
2-Atribuir 777 para todas as pastas $ sudo chmod guo+w -R test.app/
3-Adicionar u(User) no grupo www-data e vice-versa e garantir permissão rwx para ambos em todos
os folders e arquivos. (Essa abordagem é estranha mas parece ser a mais correta. Eu ainda não testei em
todos os cenários, principalmente quando o processo usa o(Others) para executar, como é o caso desse post).
ila@ig:~/vhosts/test.app/storage/logs(master)$ ll
total 20
drwxrwxrwx 2 ila www-data 4096 Mar 11 15:26 ./
drwxrwxrwx 5 ila www-data 4096 Mar 11 13:43 ../
-rw-rw-rw- 1 ila www-data 14 Mar 11 13:43 .gitignore
-rw-r--r-- 1 www-data www-data 4626 Mar 11 23:22 laravel.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment