Дозволи для файлів Laravel для apache


1

Я встановлюю додаток Laravel на дистрибутив Centos 7. Я використовую PHP 7.2 і успішно встановив apache і мій проект.

Я зміг отримати Apache сплеск сторінку, щоб показати, але як тільки я вказую мій віртуальний хост на мою laravel громадських папках я отримую помилки файлу дозволу в логах apache2.

Я зробив як мої громадські та папки для зберігання читання / запису / виконувані всіма на короткий період, і я все ще отримую помилки.

Мій віртуальний хост:

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

Мої дозволи (після тимчасового chmod 777 для загальнодоступних і початкових завантажень):

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

Помилки в / 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

Редагувати: Я sudo chmod -R 777 / var / (тимчасово), і я все ще отримую ці помилки дозволів.


Будь ласка, напишіть текст як текст, а не як скріншоти.
Scott

@Scott Дякуємо за пораду; Я відредагував свою публікацію.
mRhouse

Відповіді:


0

Ваші файли належать root. Сподіваюся, що ваш веб-сервер не запускається від імені користувача root. Призначення CentOS, як і багатьох інших, використовує www-дані як групу, а користувач для файлів, доступних для веб-сервера, які можна спробувати:

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

Див. Також документацію laravel 5.6 / 4.2 чому останній має сенс. Можливо, вам доведеться зробити те ж саме для каталогу кешу.


Я спробував ці інструкції і помилки все ще зберігаються.
mRhouse

0

Laravel вимагає, щоб деякі папки були доступними для запису для користувача веб-сервера. Ви можете використовувати ці команди у вашому проекті:

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

-1

Дякуємо за допомогу. Виявляється, я успішно встановлював дозволи, але вони були відмінені Centos.

sudo setenforce 0

Зазначене працювало для мене.


1
Ну, технічно це відповідь - він вимкнув selinux, а не встановив відповідну мітку до папки.
Journeyman Geek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.