Permissões de arquivo do Laravel para o apache

1

Estou instalando um aplicativo do Laravel em uma distro do Centos 7. Estou usando o PHP 7.2 e instalei com sucesso o apache e meu projeto.

Consegui exibir a página inicial do Apache, mas assim que aponto meu host virtual para minha pasta pública laravel, recebo erros de permissão de arquivo nos logs do apache2.

Eu fiz as minhas pastas públicas e de armazenamento de leitura / gravação / executável por todos por um curto período e ainda estou recebendo os erros.

Meu host virtual:

<VirtualHost *:80>

DocumentRoot /var/www/html/checkers/public

<Directory /var/www/html/checkers/public>
    Options +Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

</VirtualHost>

Minhas permissões (após o chmod temporário 777 em público e bootstrap):

drwxr-xr-x. 13 root root   4096 Jul  6 03:16 .
drwxr-xr-x.  3 root root     22 Jul  6 03:16 ..
drwxr-xr-x.  6 root root    106 Jul  6 03:16 app
-rw-r--r--.  1 root root   1686 Jul  6 03:16 artisan
drwxrwxrwx.  3 root root     34 Jul  6 03:16 bootstrap
-rw-r--r--.  1 root root   1477 Jul  6 03:16 composer.json
-rw-r--r--.  1 root root 143918 Jul  6 03:16 composer.lock
drwxr-xr-x.  2 root root    247 Jul  6 03:16 config
drwxr-xr-x.  5 root root     72 Jul  6 03:16 database
-rw-r--r--.  1 root root    651 Jul  6 03:16 .env.example
drwxr-xr-x.  8 root root    198 Jul  6 03:22 .git
-rw-r--r--.  1 root root    111 Jul  6 03:16 .gitattributes
-rw-r--r--.  1 root root    155 Jul  6 03:16 .gitignore
-rw-r--r--.  1 root root   1022 Jul  6 03:16 package.json
-rw-r--r--.  1 root root   1134 Jul  6 03:16 phpunit.xml
drwxrwxrwx.  4 root root    116 Jul  6 03:16 public
-rw-r--r--.  1 root root   3675 Jul  6 03:16 readme.md
drwxr-xr-x.  5 root root     45 Jul  6 03:16 resources
drwxr-xr-x.  2 root root     75 Jul  6 03:16 routes
-rw-r--r--.  1 root root    563 Jul  6 03:16 server.php
drwxr-xr-x.  5 root root     46 Jul  6 03:16 storage
drwxr-xr-x.  4 root root     83 Jul  6 03:16 tests
drwxr-xr-x. 37 root root   4096 Jul  6 03:22 vendor
-rw-r--r--.  1 root root    549 Jul  6 03:16 webpack.mix.js

Os erros em / etc / httpd / logs / error_log:

[php7:error] [pid 9120] [client 192.168.10.1:46658] PHP Fatal error: 
Uncaught ErrorException:
file_put_contents(/var/www/html/checkers/storage/framework/views/27ab4a7b5ea3854dc076406e3c218364a7743be0.php):
failed to open stream: Permission denied in
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\nStack
trace:\n#0 [internal function]:
Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2,
'file_put_conten...', '/var/www/html/c...', 122, Array)\n#1
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122):
file_put_contents('/var/www/html/c...', '<?php $__env->s...', 0)\n#2
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php(122):
Illuminate\Filesystem\Filesystem->put('/var/www/html/c...', '<?php
$__env->s...')\n#3
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51):
Illuminate\View\Compilers\BladeCompiler->compile('/var/www/html/c...')\n#4
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Vi in
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php
on line 122 
[Fri Jul 06 03:41:01.295172 2018] [php7:error] [pid 9120]
[client 192.168.10.1:46658] PHP Fatal error:  Uncaught ErrorException:
file_put_contents(/var/www/html/checkers/storage/framework/views/27ab4a7b5ea3854dc076406e3c218364a7743be0.php):
failed to open stream: Permission denied in
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\nStack
trace:\n#0 [internal function]:
Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2,
'file_put_conten...', '/var/www/html/c...', 122, Array)\n#1
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122):
file_put_contents('/var/www/html/c...', '<?php $__env->s...', 0)\n#2
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php(122):
Illuminate\Filesystem\Filesystem->put('/var/www/html/c...', '<?php
$__env->s...')\n#3
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51):
Illuminate\View\Compilers\BladeCompiler->compile('/var/www/html/c...')\n#4
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Vi in
/var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php
on line 122

Edit: Eu tenho o sudo chmod -R 777 / var / (temporariamente) e ainda recebo esses erros de permissão.

    
por mRhouse 06.07.2018 / 01:42

3 respostas

0

Seus arquivos são de propriedade de root. Espero que o seu servidor web não seja executado como root. Assumindo que o CentOS, como muitos outros, usa o www-data como um grupo e o usuário para arquivos acessíveis do servidor da Web, você pode tentar o seguinte:

chown -R www-data:www-data /var/www/html/laravel
chmod -R 755 /var/www/html/laravel/storage

Veja também a documentação do laravel 5.6 / 4.2 porque este último faz sentido. Você também pode precisar fazer o mesmo para o seu diretório de cache.

    
por 06.07.2018 / 07:30
0

O Laravel requer que algumas pastas sejam graváveis para o usuário do servidor web. Você pode usar esses comandos no seu projeto:

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
    
por 19.09.2018 / 17:54
-1

Obrigado pela ajuda. Acontece que eu estava definindo as permissões com sucesso, mas elas estavam sendo substituídas pelo Centos.

sudo setenforce 0

O acima funcionou para mim.

    
por 07.07.2018 / 03:43