我已经在Ubuntu服务器20.04上部署了我的Laravel应用程序,除了权限问题外,我什么都没有。该应用程序本身可以工作,我可以在localhost上查看它(我不需要它可以公开访问。(
但无论我做什么,它都会喷出文件权限错误,这完全没有意义。
- 是否尝试运行composer命令?这是权限错误
- 试试git pull?这是权限错误
- 尝试记录它为什么有权限错误?这也是一个权限错误
- 尝试从我的网站导出电子表格并存储它?这也是一个权限错误
- 在整个站点目录上禁用的
chmod 777
是否存在权限错误?它仍然抱怨权限问题 - 即使在90%的时间里以sudo的方式运行命令,也会给我一些保姆式的信息,告诉我如何";不应该这样做"并且拒绝让我进步,即使我这么做有一个完全合理的理由,而且在它允许我运行它的10%的时间里,你猜怎么着,这仍然是权限错误
我真的不明白怎么会有人保持理智并设置这个。我完全遵循了每个人在stackoverflow上关于创建新用户、将其添加到www-data
等主题的建议,但它拒绝授予权限。当试图进行故障排除时,由于这些愚蠢的权限错误,什么都不可能,每个人都会说";暂时地";chmod 777
,我已经尝试过了,显然甚至给777的权限仍然不够高?
我已经删除了我的Ubuntu安装两次,并逐字逐句地遵循了多个不同的在线指南,我只是不明白了。有人能提供一些见解吗?我不明白为什么要这么难,因为大约一年前,我在Ubuntu上安装了一个Laravel应用程序,花了大约30分钟的时间才让它完全运行,没有出现任何问题。
只是为了向任何观看此讨论的人说明显而易见的。。。。如果您授予任何文件夹777权限,则表示您允许任何人读取、写入和执行该目录中的任何文件。
如果您将文件夹权限设置为777,那么您已经向任何能够找到该目录的人打开了服务器。足够清晰??:(
基本上有两种方法可以设置您的所有权和权限。要么你赋予自己所有权,要么你让网络服务器成为所有文件的所有者。
作为所有者的网络服务器(大多数人的做法,以及Laravel医生的做法(:
假设www数据(可能是其他数据(是您的Web服务器用户。
sudo chown -R www-data:www-data /path/to/your/laravel/root/directory
如果你这样做,网络服务器拥有所有文件,也是该组,你将在上传文件或通过FTP处理文件时遇到一些问题,因为你的FTP客户端将以你的身份登录,而不是你的网络服务器,所以将你的用户添加到网络服务器用户组:
sudo usermod -a -G www-data ubuntu
当然,这假设您的Web服务器以www数据运行(Homestead默认值(,并且您的用户是ubuntu(如果您使用Homestead,则它是流浪者(。
然后您将所有目录设置为755,将文件设置为644…
设置文件权限
sudo find/path/to/your/lavel/root/directory-type f-exec chmod 644{};
设置目录权限
sudo find/path/to/your/lavel/root/directory-type d-exec chmod 755{};
您的用户作为所有者
我更喜欢拥有所有的目录和文件(这让处理一切都变得更容易(,所以,转到你的laravel根目录:
cd /var/www/html/laravel // assuming this is your current root directory
sudo chown -R $USER:www-data .
然后我给自己和网络服务器权限:
sudo find . -type f -exec chmod 664 {} ;
sudo find . -type d -exec chmod 775 {} ;
然后授予Web服务器对存储和缓存的读写权限
无论你以何种方式设置它,你都需要为网络服务器提供读取和写入权限,以便存储、缓存以及网络服务器需要上传或写入的任何其他目录(取决于你的情况(,所以运行上面bashy的命令:
sudo chgrp-R www数据存储引导程序/缓存sudo chmod-R ug+rwx存储引导程序/缓存
这是多个答案的组合,我在电脑上有一个txt文件,每次部署时都会使用它。