我正在 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>
</VirtualHost>
我的权限(在 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 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/(临时),但仍然收到这些权限错误。
答案1
谢谢你的帮助。事实证明我成功设置了权限,但它们被 Centos 覆盖了。
sudo setenforce 0
以上对我有用。
答案2
答案3
Laravel 要求某些文件夹对 Web 服务器用户具有可写权限。您可以在项目中使用这些命令:
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
答案4
转到 /etc/selinux
打开配置文件并更改
SELINUX=disabled