【问题标题】:Laravel file permissions for ApacheApache 的 Laravel 文件权限
【发布时间】:2018-12-14 14:44:58
【问题描述】:

我正在 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>

我的权限(在 public 和 bootstrap 上临时 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 致命错误: 未捕获的错误异常: 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\nStack 跟踪:\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 行 [2018 年 7 月 6 日星期五 03:41:01.295172] [php7:error] [pid 9120] [客户端 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\nStack 跟踪:\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 行

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

【问题讨论】:

标签: php laravel apache centos


【解决方案1】:

感谢您的帮助。事实证明,我成功设置了权限,但它们被 Centos 覆盖了。

sudo setenforce 0

以上对我有用。

【讨论】:

    【解决方案2】:

    您是否递归地更改了权限?

    尝试:

    chmod -R 777 /var/www/html/checkers/storage
    chmod -R 777 /var/www/html/checkers/bootstrap
    

    【讨论】:

      【解决方案3】:

      将所有目录的所有者分配给您的用户名并将组分配给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 {} \;
      

      你可以在这里查看详情File permissions for Laravel 5 (and others)

      【讨论】:

      • 我已按照这些说明操作,但我仍然收到文件权限错误。
      • 你有没有用ls -all检查过laravel目录权限?
      • 是的。实际上,我对整个 /var/ 目录执行了 sudo chmod -777 -R ,但仍然出现这些错误。我在服务器管理员方面有点新,所以我有点摸不着头脑。
      猜你喜欢
      • 2011-05-29
      • 1970-01-01
      • 2013-04-21
      • 2015-07-18
      • 1970-01-01
      • 2014-08-01
      • 2015-04-03
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多