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

如何解决Azure 应用服务上的 Drupal 9 文件存储

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

  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 文件来处理各种令人讨厌的事情,但仍然一无所知。让多位同事对此进行了调查,但似乎没有任何效果

解决方法

快速更新:尝试了我能想到的最后一件事。有很多人尝试和帮助,但出现同样的错误 500 或 502。微软支持两周没有答复。

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

在之前的尝试中,现在 azure ssh 将 /home 目录中的所有文件显示为 nobody:nogroup 777,将对此进行进一步调查,因为如果这是真的,这可能会导致一些安全问题(但检查了 settings.php 等文件,并且它们至少可以防止网络访问)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?