1

I'm installing a Laravel app on a Centos 7 distro. I'm using PHP 7.2 and I've successfully installed apache and my project.

I was able to get the Apache splash page to show but as soon as I point my virtual host to my laravel public folder I get file permission errors in apache2 logs.

I've made both my public and storage folders read/write/executable by all for a short period and I am still getting the errors.

My virtual host:

<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>

My permissions (after temporary chmod 777 on public and 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

The errors in /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: I've sudo chmod -R 777 /var/ (temporarily) and I still get these permission errors.

  • Please post text as text, not as screenshots. – Scott Jul 6 '18 at 1:54
  • @Scott Thanks for the tip; I've edited my post. – mRhouse Jul 6 '18 at 3:49
0

Your files are owned by root. Hopefully your web server doesn't run as root. Assumign CentOS like many others uses www-data as a group and user for webserver accessible files you could try the following:

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

See also the laravel documentation 5.6/4.2 why the latter makes sense. You might also need to do the same for your cache directory.

  • I've tried these instructions and the errors still persist. – mRhouse Jul 6 '18 at 16:19
0

Laravel requires some folders to be writable for the web server user. You can use these command on your project:

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
-1

Thank you for the help. It turns out I was setting the permissions successfully but they were being overridden by Centos.

sudo setenforce 0

The above worked for me.

  • 1
    Well technically that's kind of an answer - he's turned off selinux, rather than setting the appropriate label to the folder. – Journeyman Geek Jul 7 '18 at 4:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.