【问题标题】:Web server has no permission to access files on network driveWeb 服务器无权访问网络驱动器上的文件
【发布时间】:2021-01-26 15:58:06
【问题描述】:

我想使用 DDEV 作为本地开发环境。设置成功,网站(WordPress)正在运行。

目前我们的团队正在使用 XAMPP,为了避免在每台本地机器上下载大文件,我们创建了符号链接(例如 WordPress 中的“上传”文件夹)。目标是网络驱动器。因此,我们团队中的每个人都可以访问相同的文件。

现在我想对 DDEV 做同样的事情。在 WSL 中,我安装了网络驱动器并创建了一个符号链接。在控制台中,我可以完全访问挂载的目录,可以创建、编辑和删除文件。

但是当我使用浏览器访问文件时,我收到以下错误消息:

403 禁止。您无权访问此资源。

当我尝试在 WordPress 中上传新文件时,也会出现同样的错误。

有没有办法让网络服务器有权查看和修改网络驱动器上的文件?

网络服务器是 Apache/2.4.38。

【问题讨论】:

  • 请记住,主机上的文件系统(在本例中为 WSL2)与容器中的文件系统不同。因此,您必须 1) 将外部文件系统安装到容器中,可能使用 docker-compose.*.yaml 然后 2) 在 Web 容器内创建一个适用于它的符号链接。你可以在网络容器ddev ssh 中研究这个,当符号链接在那里工作时,你就很好了。如果您有一个确切的例子,很高兴帮助您解决这个问题。他们的关键是你必须将它安装到 container.
  • 您将需要一个基于ddev.readthedocs.io/en/stable/users/extend/custom-compose-files/… 的 docker-compose.mountuploads.yaml 并在 Web 服务中添加一个 volumes 部分,其中包含一个有效的项目,例如 - /host/path/to/uploads:/mnt/uploads 然后您可以所以根据需要到 /mnt/uploads 的符号链接。请注意,docker 可能根本无法以这种方式挂载网络驱动器。
  • 另一个注意事项:对于这种确切的情况,Drupal 有一个名为 stage_file_proxy 的不错的模块,它甚至不需要关闭这种类型的文件。如果 WP 有类似的东西...drupal.org/project/stage_file_proxy
  • @rfay 我创建了 docker-composer 文件。现在我可以访问 ddev ssh 中的上传文件夹。但是当我尝试创建文件(例如使用touch)时,它会返回以下错误消息:touch: cannot touch 'test.txt': Permission denied 在我的测试用例中,我需要不同的凭据来访问网络驱动器。这可能是原因吗?这是我的 docker-compose 文件:volumes: - /var/www/html/web/app/uploads:/mnt/t/ddev-test/uploads
  • 我切换了两个部分,现在它可以工作了,也可以使用网络驱动器!我不确定是什么解决了主要问题,因为与此同时,网络驱动器上的权限已更新。非常感谢您的帮助!

标签: permissions windows-subsystem-for-linux wsl-2 ddev


【解决方案1】:

正如@rfay 提到的,我必须将网络驱动器添加为卷,以便网络容器可以访问它。因此,我在 .ddev 目录中创建了一个新的 docker-compose-file(另请参阅文档:https://ddev.readthedocs.io/en/stable/users/extend/custom-compose-files/#docker-compose42yaml-examples)。

另外,网络驱动器的权限不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多