0

我正在开发作为 Web 应用程序托管在 Azure 上的 CodeIgniter 应用程序。我有一些代码将上传的文件写入资产/上传文件夹下的临时文件夹中。但我收到以下错误:

The upload destination folder does not appear to be writable.

但是相同的代码正在我们的暂存环境中运行。我曾尝试在Kudu面板上为assets/uploads文件夹运行chmod & attrib命令,但这不起作用。还尝试了 attrib -r assets*.* /s命令,但没有奏效。

任何人都可以帮助如何授予此文件夹的写权限吗?不确定其他开发人员如何授予上传文件工作的暂存环境的权限,因为开发人员现在不存在。

谢谢

4

1 回答 1

0

只是强调一下,标准/本机 Azure Web 应用程序在称为沙盒的安全环境中运行。每个应用程序都在自己的沙箱内运行,将其执行与同一台机器上的其他实例隔离开来,并提供额外的安全性和隐私性,否则这些应用程序将无法使用。

本地目录访问 (d:\local\Temp) - 每个 Azure Web 应用程序都有一个本地目录,该目录是临时的,当应用程序不再在 VM 上运行时会被删除。该目录是为应用程序存储临时数据的地方。沙箱实现了一个动态符号链接,它将 d:\local 映射到该目录。应用程序自然具有对该目录的读/写访问权限。

持久化文件 - 它们植根于 d:\home,也可以使用 %HOME% 环境变量找到。对于 Linux 上的应用服务和容器的 Web 应用,持久存储植根于 /home。符号链接创建:虽然沙盒应用程序可以跟踪/打开现有的符号链接,但它们不能在任何地方创建符号链接(或任何其他重解析点)。

您可以确认写入是否发生在上述允许的路径上。在交换操作的任何时候,初始化交换应用程序的所有工作都发生在源插槽上。在准备和预热源插槽时,目标插槽保持在线,无论交换在哪里成功或失败。要将暂存槽与生产槽交换,请确保生产槽始终是目标槽。这样,交换操作不会影响您的生产应用程序。

根据您的要求,您还可以在应用服务中使用自定义容器,让您可以更改应用所需的操作系统,因此可以轻松迁移需要自定义操作系统和软件配置的本地应用。请参阅沙盒页面

查看这些文档以了解有关此主题的更多详细信息:
在 Azure 应用服务中运行自定义 Linux 容器

在 Azure 中运行自定义 Windows 容器(预览版)

于 2019-09-10T11:56:12.223 回答