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

How to setup laravel file permission once and for all

我关注了这个投票 并做了以下事情:

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 用户创建时,网络服务器无法写入它或相反亦然。除非我在创建目录后重新运行那些命令。

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

此外,my-user 已经在 www-data 组中。

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

选项 1 添加 www-data 组到 my-user:

sudo adduser www-data my-user

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

在www.conf中找到options user和group,改成[my-user] group=mygroup

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

这样你就不用每次都使用linux创建文件夹和设置权限的方式了。

所以创建一个artisan命令执行如下

php artisan createStorageFolder:FolderName

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

jr web dev 的 webroot 区域有这个问题(我们阻止他访问项目所在的一般 webroot 访问权限)。简单的修复只是添加一个每分钟更改一次权限的 cronjob。

试一试:

# 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

在 laravel 项目文件夹的根目录下 sudo chown -R $USER:$USER * 怎么样?
要么
sudo chown -R $USER:$USER [laravel folder name] 如果您在 laravel 文件夹/项目的父目录之外/中?

您提到您的用户与 www-data 用户属于同一组,因此 this 中的以下答案可能有效(我在 ubuntu 中尝试过,但类似的步骤可能有效在你的 *nix OS):

类型sudo gedit ~/.bashrc

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

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

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