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