docker - Azure Web 应用程序中 Docker 中的 Laravel 无法从已安装的文件存储中提供图像

标签 docker azure-web-app-service laravel-8 azure-files

我有一个 azure Web 应用程序,其中包含一个运行 apache 的自定义容器、带有 laravel 的 php 7.4 和一个已安装的 azure 文件存储。
从已安装的存储提供 .png 文件确实适用于我在 docker 桌面中的本地构建,并且它适用于物理机上的 testystem。

存储安装到/var/www/data_persistent ,laravel 提供来自/var/www/api/public 的数据。为了保留显示的数据,图像将被写入要提供服务的存储中。

我有一个从公共(public)文件夹内部到存储中的链接 ln -fs/var/www/data_persistent/maps/var/www/api/public/maps

在 Azure 上,如果我在 map 的任何文件夹中请求图像,我会收到 400 响应,如果文件完全为空,则可以正常工作。

这是它在网络应用程序上的样子:

total 28
4 drwxr-xr-x 2 root root 4096 Aug 11 13:17 css
0 -rwxr-xr-x 1 root root    0 Jan 28  2022 favicon.ico
4 drwxr-xr-x 3 root root 4096 Aug 11 13:17 images
4 -rwxr-xr-x 1 root root 1785 Feb  4  2022 index.php
4 drwxr-xr-x 2 root root 4096 Aug 11 13:17 js
0 lrwxrwxrwx 1 root root   29 Aug 11 13:20 maps -> /var/www/data_persistent/maps 

这是在 map 内:

total 29943
    0 drwxrwxrwx 2 nobody nogroup        0 Jul 10 23:41 .
    0 drwxrwxrwx 2 nobody nogroup        0 May 29 16:23 ..
    0 drwxrwxrwx 2 nobody nogroup        0 Jul 28 15:36 1
 2715 -rwxrwxrwx 1 nobody nogroup  2779239 Jul 28 15:47 1.tif
    0 drwxrwxrwx 2 nobody nogroup        0 Jul 28 12:34 7
27229 -rwxrwxrwx 1 nobody nogroup 27881853 Jul 28 12:43 7.tif 

写入文件存储工作,您看到的文件夹和文件是从前端和脚本上传的结果。 如有任何帮助,我们将不胜感激。

2022 年 8 月 17 日更新: 我尝试过很多选择,比如
关闭启用发送文件
在启用站点的 apacheconf 中,但到目前为止还没有运气。 有趣的是,在提供图像时,Apache 日志显示状态代码 200。

还可以从已安装的存储中提供 html 文件,但前提是它们是有效的 html 内容 (!)。

最佳答案

问题似乎出在设置 EnableMMAP在 Apache 。

添加EnableMMAP Off<Directory "${APACHE_DOCUMENT_ROOT}">apache2.conf

此 block /etc/apache2/apache2.conf 的示例

<Directory "${APACHE_DOCUMENT_ROOT}">
    Options Indexes FollowSymLinks
    EnableMMAP Off
    AllowOverride None
    Require all granted
</Directory>

来源:https://azureossd.github.io/2020/09/15/unable-to-download-static-content-php-on-azure-app-service-linux/

关于docker - Azure Web 应用程序中 Docker 中的 Laravel 无法从已安装的文件存储中提供图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73322091/

相关文章:

docker - 拒绝 : requested access to the resource is denied

node.js - 如何在docker run中设置环境变量

python - 从 Dockerfile 运行 Gunicorn 不起作用,但可以手动启动

带有关系单元测试的 Laravel 用户层次结构出错了

linux - 使用 Docker 在 Vagrant 中破坏专用网络

asp.net-mvc - Html.RouteLink 在部署到 Azure 后停止生成链接

Azure 应用程序网关锁定了应用程序服务的路由

GitLab 持续部署到 Azure Web 应用程序

php - 禁用Laravel 8中的Auth Register路由?

php - 根据 Laravel 中的类型从变形关系中选择特定列