首页 > 解决方案 > Apache 的 Laravel 文件权限

问题描述

我正在 Centos 7 发行版上安装 Laravel 应用程序。我正在使用 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>

我的权限(在公共和引导上的临时 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 致命错误:未捕获的 ErrorException:file_put_contents(/var/www/html/checkers/storage/framework/views/27ab4a7b5ea3854dc076406e3c218364a7743be0.php):无法打开流: /var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\n堆栈跟踪:\n#0 [内部函数]: Illuminate\Foundation\Bootstrap\HandleExceptions 中的权限被拒绝->handleError(2, 'file_put_conten...', '/var/www/html/c...', 122, 数组)\n#1 /var/www/html/checkers/vendor/laravel/framework/ src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/var/www/html/c...', '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...', '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 在 /var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php 第 122 行 [Fri Jul 06 03:41:01.295172 2018] [php7:error] [pid 9120] [client 192.168.10.1:46658] PHP 致命错误:未捕获的 ErrorException:file_put_contents(/var/www/html/checkers/storage/framework/views/27ab4a7b5ea3854dc076406e3c218364a7743be0.php):无法打开流:/ 中的权限被拒绝var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\n堆栈跟踪:\n#0 [内部函数]: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...', '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... ', 's...')\n#3 /var/www/html/checkers/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51): Illuminate\View\Compilers\BladeCompiler ->编译('/var/www/html/c...')\n#4 /var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Vi 在 /var/www/html/checkers/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php在第 122 行

编辑: 我已经 sudo chmod -R 777 /var/ (暂时),我仍然得到这些权限错误。

标签: phplaravelapachecentos

解决方案


将所有目录的所有者分配到您的用户名和组到www-data. 假设您的 apache 组是您的用户www-datamy-user

sudo chown -R my-user:www-data /path/to/your/laravel/root/directory

然后像这样更改文件和目录权限

sudo find /path/to/your/laravel/root/directory -type f -exec chmod 664 {} \;    
sudo find /path/to/your/laravel/root/directory -type d -exec chmod 775 {} \;

您可以在此处查看详细信息Laravel 5(和其他)的文件权限


推荐阅读