Azure 应用服务上的 Drupal 9 文件存储

Edv*_*kas 5 storage drupal file azure docker

已经和这个问题斗争了一个月了。在 Azure 应用程序服务上设置 Drupal 9,并使用运行 php8 的 docker 映像(基本映像 drupal:9.1.7-php8.0-apache) 我发现有两种方法可以获取“sites/default/files”公共文件azure 中提供的目录:

  1. 将“sites/default/files”文件夹符号链接到“/home/files”文件夹,并在应用程序设置中将 WEBSITES_ENABLE_APP_SERVICE_STORAGE 设置为 true。
  2. 使用路径映射(当前处于预览版)将 Azure 文件共享直接挂载到“sites/default/files”文件夹顶部。

两个选项都有效,我的文件已成功上传,并且我可以在存储中看到它们。Drupal 也会看到这些文件,但每次我尝试访问任何上传的文件时,都会收到 500 错误,唯一的错误是Failed to forward request to application. Encountered a System.Net.Http.HttpRequestException exception after 119.915ms with message: Received an invalid status line: 'anges: bytes'.. Check application logs to verify the application is properly handling HTTP traffic.如果我删除上传的文件,应用程序会做出反应并显示找不到该文件。

如果我禁用持久存储(上述任何选项),文件将正确上传,不会显示错误,但问题是每次重新启动或部署应用程序时,文件都会消失。

Drupal 的日志中没有错误。Apache 日志没有更多有用的信息(GET 似乎没问题并返回 200)。尝试过弄乱 apache.conf、php.ini、两个 .htaccess 文件,允许各种令人讨厌的事情,但仍然没有任何线索。有多个同事对此进行了研究,但似乎没有任何效果。

Edv*_*kas 1

快速更新:尝试了我能想象到的一切。有很多人尝试帮助,但出现了相同的错误 500 或 502。两周了,微软支持部门没有回复。

不是使用 docker 容器而是使用 php 7.4 创建新的应用程序服务,并手动将所有 drupal 文件上传到 /home/site/wwwroot,还将 WEBSITES_ENABLE_APP_SERVICE_STORAGE 设置为 true,以便 /home 目录保持持久状态,并且网络似乎工作正常,文件全部好的。

在之前的尝试中,现在 azure ssh 将 /home 目录中的所有文件显示为没人:nogroup 777,将进一步调查这一点,因为如果这是真的,这可能会导致一些安全问题(但检查了 settings.php 等文件,它们至少受到保护从网络访问)