php - 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/ (暂时),我仍然得到这些权限错误。
解决方案
将所有目录的所有者分配到您的用户名和组到www-data
. 假设您的 apache 组是您的用户www-data
名my-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(和其他)的文件权限
推荐阅读
- android - Oppo 设备在 Android 中出现 WebView 滚动问题
- fpga - 在 EDK 14.7 中打开 Edk 11.1 项目。Spartan 3A 视频入门套件 3400D
- java - 如何通过 Viewmodel 调用 sqlite 方法?
- image - 如何将底部边缘与上方视图 SwiftUI 的底部尾随对齐
- c - 使用为函数指针声明指定的 `__irq` 有什么作用吗?
- microsoft-dynamics - Dynamics SolutionPackager.exe 值不能为空
- c++ - “单个变量作为语句”会做什么?
- sql - 如何在 SQL 中选择每年的日期范围
- php - 禁用 PHPUnit 中单个方法/构造函数的代码覆盖率
- reactjs - Redux 在内部使用上下文 API 吗?