我已经跟踪了这个投票通过的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组中。
如何避免权限错误?而不再次运行所有这些命令。
7条答案
按热度按时间vawmfj5a1#
给予看:
mo49yndu2#
sudo chown -R $USER:$USER *
在laravel项目文件夹根目录下如何?或
sudo chown -R $USER:$USER [laravel folder name]
如果您在laravel文件夹/ project的父目录之外/之内?vwoqyblh3#
选项1将www-data组添加到我的用户:
选项2将php-fpm的用户更改为my-user(ref):
在www.conf中找到选项user和group,并将其更改为
[my-user] group=mygroup
xxhby3vn4#
我最好的解决办法是建立一个工匠指挥部。
这样你就不用每次都用linux的方式创建文件夹和设置权限了。
因此,创建一个执行如下的artisan命令
php artisan创建存储文件夹:文件夹名称
这将自动设置用户权限为apache:apache或类似的。如果没有,您也可以执行linux/shell命令来设置对artisan方法的权限。
3pmvbmvn5#
您提到您的用户与www-data用户属于同一组,因此this中的以下答案可能有效(我在ubuntu中尝试过,但类似的步骤可能在 *nix操作系统中有效):
类型
sudo gedit ~/.bashrc
找到任何
umask
行并将其更改为umask 002
这意味着您和您的组可以为新文件和目录设置所有权限。实际上,这意味着创建的新文件具有664个权限,创建的新目录具有775个权限这应该包括用你的用户帐户创建的新文件。当然,你需要小心,无论何时你做
sudo create this file
,因为这将创建它的根用户。请注意,这不是一个完美的解决方案,因为仍然有一些事情只有文件所有者和root用户可以做(例如更改所有者或权限),但它可能涵盖大多数其他情况
mwngjboj6#
从laravel文档(www.example.com)中https://laravel.com/docs/8.x/filesystem#local-files-and-visibility,您可以在config/filesystems.php文件中设置文件系统的权限:
同样来自文档:
文件可以声明为公用或专用。当文件声明为公用时,表示其他人通常可以访问该文件。例如,使用S3驱动程序时,可以检索公用文件的URL。
yb3bgrhw7#
有一个jr web开发人员的webroot区域有这个问题(我们阻止了他访问项目所在的webroot区域)。简单的修复方法是添加一个cronjob,它每分钟都会更改权限。