社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

ltdev • 5 年前 • 1535 次点击  

我正在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
 
1535 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Mostafa Hussein
Reply   •   1 楼
Mostafa Hussein    6 年前

您需要做的只是从主机本身更改挂载目录的权限,例如,如果主机上有以下目录 /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)