php 如何一次性设置laravel文件权限

wko9yo5t  于 2023-01-19  发布在  PHP
关注(0)|答案(7)|浏览(179)

我已经跟踪了这个投票通过的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

一切正常,但是每当目录(在存储目录中)是由my-user而不是www-data用户创建的,web服务器就不能写入它,反之亦然,除非我在目录创建后重新运行这些命令。
注意:有时我用my-user命令创建目录,有时www-data用户创建目录(在storage目录内)。
此外,我的用户已经在www-data组中。
如何避免权限错误?而不再次运行所有这些命令。

vawmfj5a

vawmfj5a1#

给予看:

# 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
mo49yndu

mo49yndu2#

sudo chown -R $USER:$USER *在laravel项目文件夹根目录下如何?

sudo chown -R $USER:$USER [laravel folder name]如果您在laravel文件夹/ project的父目录之外/之内?

vwoqyblh

vwoqyblh3#

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

sudo adduser www-data my-user

选项2将php-fpm的用户更改为my-user(ref):
在www.conf中找到选项user和group,并将其更改为[my-user] group=mygroup

xxhby3vn

xxhby3vn4#

我最好的解决办法是建立一个工匠指挥部。
这样你就不用每次都用linux的方式创建文件夹和设置权限了。
因此,创建一个执行如下的artisan命令
php artisan创建存储文件夹:文件夹名称
这将自动设置用户权限为apache:apache或类似的。如果没有,您也可以执行linux/shell命令来设置对artisan方法的权限。

3pmvbmvn

3pmvbmvn5#

您提到您的用户与www-data用户属于同一组,因此this中的以下答案可能有效(我在ubuntu中尝试过,但类似的步骤可能在 *nix操作系统中有效):
类型sudo gedit ~/.bashrc
找到任何umask行并将其更改为umask 002这意味着您和您的组可以为新文件和目录设置所有权限。实际上,这意味着创建的新文件具有664个权限,创建的新目录具有775个权限
这应该包括用你的用户帐户创建的新文件。当然,你需要小心,无论何时你做sudo create this file,因为这将创建它的根用户。
请注意,这不是一个完美的解决方案,因为仍然有一些事情只有文件所有者和root用户可以做(例如更改所有者或权限),但它可能涵盖大多数其他情况

mwngjboj

mwngjboj6#

从laravel文档(www.example.com)中https://laravel.com/docs/8.x/filesystem#local-files-and-visibility,您可以在config/filesystems.php文件中设置文件系统的权限:

'local' => [
    'driver' => 'local',
    'root' => storage_path('app'),
    'permissions' => [
        'file' => [
            'public' => 0644,
            'private' => 0600,
        ],
        'dir' => [
            'public' => 0755,
            'private' => 0700,
        ],
    ],
],

同样来自文档:
文件可以声明为公用或专用。当文件声明为公用时,表示其他人通常可以访问该文件。例如,使用S3驱动程序时,可以检索公用文件的URL。

yb3bgrhw

yb3bgrhw7#

有一个jr web开发人员的webroot区域有这个问题(我们阻止了他访问项目所在的webroot区域)。简单的修复方法是添加一个cronjob,它每分钟都会更改权限。

相关问题