Py学习  »  docker

文件Laravel与DOCKER文件权限-不能编辑文件

ltdev • 4 年前 • 751 次点击  

我正在Docker上安装一个新的Laravel。

当我运行容器并尝试从浏览器访问laravel应用程序时,我会得到laravel在屏幕上抛出的文件权限错误。

UnexpectedValueException
The stream or file "/var/www/html/storage/logs/laravel-2019-02-24.log" could not be opened: failed to open stream: Permission denied

所以,如果我在流动的容器里 sudo chown www-data:www-data -R /var/www/html/ 并将文件的所有权切换到 www-data 用户ErrOS已经消失,我可以看到默认页面。问题是我无法编写/编辑应用程序的任何文件,也无法在代码库中进行更改。

如果我 sudo chown -R lykos:lykos ./application // the folder that my laravel app lives in 从本地终端(即不是通过运行的容器),我可以编辑文件,但文件权限的错误再次显示。

我怎么解决这个问题?顺便说一句,我在Linux上,所以我认为这个错误不会发生在Windows或Mac用户身上。我也想尽量避免 chmod 777 不建议作为适当的解决方案

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44004
 
751 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Mostafa Hussein
Reply   •   1 楼
Mostafa Hussein    5 年前

您需要做的只是从主机本身更改挂载目录的权限,例如,如果主机上有以下目录 /home/lykos/laravel/data 您需要将其安装在Docker容器中,如下所示:

  • 检查 UID GID 在用来制造 例如,你可能会发现 UID GID 具有 以下值 1000 然后从主机运行以下命令 命令 chown 1000:1000 /home/lykos/laravel/data

现在,laravel应用程序应该能够在您将其用作目标的任何目录中编写 /主页/lykos/laravel/data 并确保在没有确认您拥有正确权限的情况下不会对其进行修改,例如,除非您这样做,否则不要在其中手动创建另一个目录 chown 创建之后。

上述解决方案适用于将用于写入该目录的用户,如果有其他用户需要确保通过linux acl而不是使用world权限授予他们适当的权限(777)

假设您有一个容器作为web服务器,并且在从本地主机进行开发时需要将应用程序托管在容器中。假设用于开发的本地主机用户是 lykos web服务器使用的容器用户是 33 对于 UID GID 您可以从本地主机执行以下操作:

sudo chown 33:33 /home/lykos/laravel/data -R
sudo setfacl -Rm u:lykos:rwx,d:u:lykos:rwx /home/lykos/laravel/data

上面的命令将使web服务器能够访问和更新项目文件。并且还使本地主机能够修改当前文件和新创建的文件(请注意,如果您使用 莱科斯 需要创建的用户 乔恩 匹配web服务器uid)