【发布时间】:2020-10-15 10:56:26
【问题描述】:
这里有些神秘:我正在使用 Docker 和 DDEV 在 Windows WSL2 上运行 Drupal 9 安装,效果很好。现在我决定为图像设置一个私有文件目录。我已经按照所有说明进行了操作(例如,与 web 目录处于同一级别的私有目录)。我为 cPanel 上的实时服务器做了同样的事情。然后我创建了一个只有图像字段的简单测试实体,指定上传的图像将进入私有目录。
cPanel 服务器版本的工作方式与预期完全一样——当我创建一个新的图像实体时,该图像直接进入了私有目录。所以我很确定我的程序是正确的。
但是 DDEV 版本做了一些神秘的事情。当我创建一个新的图像实体时,一切都很好,创建了实体,我可以看到图像等。但是私有目录是空的。此外,如果我搜索整个 WSL2 文件系统,则找不到图像文件。然而它就在那里,某处。我已经创建了几个这样的实体,现在有一个包含大约十个图像文件的漂亮列表,所有这些都很好地显示。而且所有这些在 WSL2 文件系统中都找不到(至少通过文件名搜索),当然也不会在指定的私有目录中找到。
那么他们在哪里?关于这个谜团有什么想法吗? :-)
谢谢!
附:我只注意到一个线索。第一次,我不小心将我的私人文件目录指定在 web 目录下面。然后它工作正常,我看到了上传的图像文件。但如您所知,说明它不应位于 web 目录内,而应位于其外部,不能通过 HTTPS 访问。因此,也许 DDEV 具有某种不寻常的特性,使得在 web 目录之外拥有私有目录成为问题。
【问题讨论】:
-
在您的情况下,应该使用 /var/www/html/privatefiles 之类的路径指定私有文件目录,对吗?所以
$settings['file_private_path'] = '/var/www/html/privatefiles';,当然还要创建目录。 -
谢谢 - 我在远程 cPanel 站点和本地 DDEV 站点上都试过了。它在远程 cPanel 站点上运行良好,完全符合预期:也就是说,私有文件完全进入了我指定的私有目录。在本地 DDEV 站点上,这并没有发生。私人文件去了某处,因为它们被显示出来并且被清楚地保存了下来。但我不知道他们在哪里。即使在本地文件系统上搜索也不会显示它们,即使它们显然存在于我计算机的某个位置。好吧,我会继续试验,看看我发现了什么。再次感谢您的关注。
-
你可以访问 admin/config/media/file-system 看看 Drupal 认为的私有文件目录是什么,看截图:evernote.com/l/AA9LDMWE6D5NJrPrDTrHYJAdKlXbDW0w2Pc
-
在我的帖子中,我说“......也许 DDEV 有某种不寻常的特性......”。嗯,你现在已经向我描述了那个特性,彻底解开了谜团。我不了解 DDEV 的关键特征,即我必须处理 Web 容器 inside 的路径,并且该路径具有您所说明的结构(/var/www/html/ ...) ;也不是我必须用 ssh 来查看它。我以这种方式重新指定了我的私人目录,并且图像直接进入该目录,就像他们应该做的那样。再次感谢您的帮助!