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

2024-05-01

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

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

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

在 Azure 上,如果我请求地图任何文件夹中的图像,我会收到 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 

这是地图内部:

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 内容(!)。


问题好像出在设置上启用MMAP https://httpd.apache.org/docs/2.4/mod/core.html#EnableSendfile#EnableMMAP在阿帕奇。

Add EnableMMAP Off to <Directory "${APACHE_DOCUMENT_ROOT}"> in apache2.conf

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 无法将调试器从 Visual Studio 2019 连接到本地 docker Linux 容器

    因此 我在本地计算机上使用 docker compose 在 docker 容器上运行了简单的 hello world net core 应用程序设置 问题是当我尝试使用 Debug gt Attach to Process gt Conn
  • 将源代码从 git 迁移到 TFVC

    我们使用的是Visual Studio Online 我们使用TFS的git支持 我们现在想停止使用 git 并使用 TFVC 将源代码迁移到 TFVC 的最佳解决方案是什么 假设您正在 VSO 中创建另一个项目并移动源代码 按照目前的情况
  • 我可以覆盖父元素的 z-index 继承吗?

    使用绝对位置时 有什么方法可以覆盖父元素的 z index 继承 我希望 2222 div 位于 0000 div 之上 div style background color green OOOO div div style backgro
  • 使用 C# 的服务 SACL ||使用 C# 获取具有 ACCESS_SYSTEM_SECURITY 权限的服务的句柄

    有人知道如何使用 C 获取远程服务上的 SACL 吗 我尝试了很多不同的方法 但基本上没有什么效果 我可以在本地计算机上获取 DACL 和 SACL 但在远程计算机上获取其中任何一个似乎都不可能 我所做的是创建一个名为ServiceSecu
  • 如何在 Linux 中检测通过 GUI 登录的用户

    我想在我的程序中捕获通过 GUI 登录的用户名 我的程序作为守护进程从 root 登录运行 如果非 root 用户通过 GUI 登录 我的程序应该会收到通知 我正在粘贴我当前的程序 该程序调用一个 perl 脚本 利用系统调用来检查当前登录
  • 如果尚未打开,请打开工作簿;如果已打开,则获取该引用

    我有一个场景 可以在另一个工作簿路径中的工作簿中进行一些更改 但问题是我需要检查工作簿是否已经打开 如果没有 我需要将该打开的实例获取到工作簿变量 这是我用来检查工作簿是否打开的代码 然后是打开的代码 Function IsFileOpen
  • 如何在Unity中集成xAPI / TinCan

    我是 xAPI TinCan API 的新手 所以我的问题可能有点笼统 但到目前为止我还没有找到任何可以帮助我的东西 我认为可以将 xAPI 集成到 Unity 项目 游戏或模拟 中 但我到底该怎么做呢 我可以阅读有关 xAPI 和 Uni
  • 显示用户密码和设备确认页面

    我试图在 Devise 邮件程序发送的确认页面中显示用户密码 确认页面为默认页面 Welcome email protected cdn cgi l email protection You can confirm your account
  • java.lang.IndexOutOfBoundsException:无效索引 7,大小为 7

    我正在尝试实现视图寻呼机 在我的视图寻呼机图像来自服务器 我能够显示和滚动 但当我到达最后一个图像时 它显示错误并且应用程序崩溃 以下是我的代码片段 public class Test Pager extends Activity priv
  • Electron 为触摸屏启用触摸事件

    我有一个连接到触摸屏的 Raspberry Pi 并通过 startx 命令在其上运行电子应用程序 startx electron app nocursor 我无法处理触摸事件 例如 touchstart touchend 的问题 显然这是
  • java中如何将字符串日期转换为时间戳?

    我想在java中将字符串日期转换为时间戳 我编写了以下编码 我声明 date1 的日期是 7 11 11 12 13 14 SimpleDateFormat datetimeFormatter1 new SimpleDateFormat y
  • Android 动态删除按钮

    我有一个按钮 当我按下它时 我想将其删除 而不是使其不可见 我读到我可以使用layout removeView mybutton 但布局是什么 我怎样才能在我的活动中得到它 Button showQuestion private void
  • findPreference(java.lang.CharSequence) 已弃用

    它给我错误 findPreference java lang CharSequence 已被弃用 目前 我的应用程序的目标是 API 10 及更高版本 任何形式的帮助来解决这个问题将不胜感激 公共类 SettingsActivity 扩展
  • 带有 Form 和 $setPristine 的 Angular 1.5 组件

    我正在尝试在 Angular 1 5 的组件中使用表单 我的表单可以正常工作 因为我有模型绑定并且可以在提交时获取数据 所以我已经完成了 90 的目标 缺少的是能够使用 setPristine 正确重置表单 我尝试了几种方法 第一种方法是将
  • C++ 虚(密封)函数

    我在我的 C 项目中使用 dll 中的类 一切都工作正常 直到 当尝试调用某个方法 在对象浏览器中列出 时 我收到一条错误消息 指出该方法不是命名空间的成员 经过调查 我注意到该方法被列为 virtual void x seal 有没有办法
  • webpack - 如何将捆绑包提取到各个组件

    我想从bundle js 一个webpack文件 中解压 提取所有组件和js文件 我只留下这个文件 我已经用谷歌搜索并尝试了几种方法来解压捆绑js文件 但它没有成功 我也尝试过该解决方案 请查找参考 如何提取Webpack中的bundle
  • 从终端输入缓冲区加载到参数堆栈

    为什么这段代码不起作用 TIB 10 ACCEPT TIB SP 1 cells 10 cmove 在该代码中 我尝试输入一个字符串并将其存储在终端输入缓冲区中 然后将其存储在参数堆栈中 但对于 S 我发现这不起作用 参数堆栈向内存不足方向
  • 这是什么文本选择控件?

    我想在具有各种文本字段的活动上的文本选择上实现相同性质的控制类型 实现图片所示行为的任何想法 参考此来自安卓2 3 http developer android com sdk android 2 3 html文档 您可以使用此方法创建自己
  • 在 Pandas 中计算滚动回归并存储斜率

    我有一些时间序列数据 我想计算 Pandas 中最后 n 天的分组滚动回归 并将该回归的斜率存储在新列中 我搜索了较旧的问题 它们要么没有得到解答 要么使用了 Pandas OLS 我听说它已被弃用 我想我可能可以使用df rolling
  • Azure Web 应用程序中 Docker 中的 Laravel 无法从已安装的文件存储中提供图像

    我有一个 azure web 应用程序 带有一个运行 apache 的自定义容器 带有 laravel 的 php 7 4 和一个安装的 azure 文件存储 从已安装的存储提供 png 文件确实适用于我在 docker 桌面中的本地构建