如何一劳永逸地设置laravel文件权限

时间:2020-09-28 02:03:45

标签: php laravel nginx file-permissions laravel-7

我已按照此意见answer进行了以下操作:

sudo chown -R my-user:www-data /var/www/domain.com/
sudo find /var/www/domain.com/ -type f -exec chmod 664 {} \;
sudo find /var/www/domain.com/ -type d -exec chmod 775 {} \;
sudo chgrp -R www-data /var/www/domain.com/storage /var/www/domain.com/bootstrap/cache
sudo chmod -R ug+rwx /var/www/domain.com/storage /var/www/domain.com/bootstrap/cache

一切正常,但是只要我的用户而不是www-data用户创建目录(在存储目录内),Web服务器就无法写入该目录,反之亦然。除非在创建目录后重新运行这些命令。

注意:有时我与my-user运行创建目录的命令,有时www-data用户创建目录。 (在存储目录中)。

此外,我的用户已经在www-data组中。

如何避免权限错误?无需再次运行所有这些命令。

6 个答案:

答案 0 :(得分:2)

尝试一下:

# give the newly created files/directories the group of the parent directory 
# e.g. the laravel group

sudo find $project_Path/bootstrap/cache -type d -exec chmod g+s {} \;
sudo find $project_Path/storage -type d -exec chmod g+s {} \;

# let newly created files/directories inherit the default owner 
# permissions up to maximum permission of rwx e.g. new files get 664, 
# folders get 775

sudo setfacl -R -d -m g::rwx ./storage
sudo setfacl -R -d -m g::rwx ./bootstrap/cache

答案 1 :(得分:0)

选项1将www-data组添加到我的用户:

npm run start

选项2将php-fpm的用户更改为my-user(ref):

在www.conf中找到选项用户和组,并将其更改为sudo adduser www-data my-user

答案 2 :(得分:0)

我最好的解决方案是创建一个工匠命令。

这样,您不必每次都使用linux创建文件夹和设置权限的方式。

因此,请创建一个如下执行的工匠命令

php artisan createStorageFolder:FolderName

这将自动将用户权限设置为apache:apache或类似权限。如果没有,您也可以执行linux / shell命令来设置artisan方法的权限。

答案 3 :(得分:0)

jr Web开发人员的webroot区域出现了此问题(我们将他从项目所在的常规Webroot访问权限中阻止了)。简单的解决方法是添加一个cronjob,每分钟更改一次权限。

答案 4 :(得分:0)

如何在laravel项目文件夹的根目录上sudo chown -R $USER:$USER *
要么
sudo chown -R $USER:$USER [laravel folder name]如果您在laravel文件夹/项目的父目录中/不在目录中?

答案 5 :(得分:0)

您提到您的用户与www-data用户属于同一组,因此this答案中的以下内容可能有用(我在ubuntu中尝试过,但类似的步骤可能在您的* nix操作系统中可用):< / p>

键入sudo gedit ~/.bashrc

查找任何umask行并将其更改为umask 002,这意味着可以为您和您的组为新文件和目录设置所有权限。实际上,这意味着使用664权限创建新文件,使用775创建新目录

这应该涵盖使用您的用户帐户创建的新文件。当然,每次执行sudo create this file时都需要小心,因为这将为root用户创建它。

请注意,这不是一个完美的解决方案,因为仍然只有文件所有者和root用户可以做一些事情(例如更改所有者或权限),但是它可能会涵盖大多数其他情况

相关问题