【问题标题】:Can I write to file system on azure web site?我可以在 azure 网站上写入文件系统吗?
【发布时间】:2012-10-09 11:17:46
【问题描述】:

我可以写入 azure 网站上的文件系统吗?例如从仪表板更新或安装 Wordpress 中的插件/主题。 AFAIK,这在 Heroku 上是不可能的,那么 Azure 网站呢?

【问题讨论】:

  • 你能解释一下为什么我的回答被否决了吗?我已经明确提到您无法像传统上那样访问 C: 或 D:。

标签: azure filesystems azure-web-app-service


【解决方案1】:

当然可以在 Azure 网站的文件系统上进行写入。但是,您的写入权限仅限于应用程序的根文件夹。因此,如果您使用 ASP.NET,您将能够在 Server.MapPath("~/from_here_on") 中的任何位置编写代码。这意味着您应该能够对位于应用程序根文件夹及以下的文件执行读/写/删除操作。如果你使用PHP,根目录可以从$_SERVER['DOCUMENT_ROOT']环境变量中获取。

Web 应用程序不需要更多权限。肯定不能在操作系统文件夹上写。

【讨论】:

  • “不需要”不太准确。并非所有网络应用程序都将所有内容都存储在公共目录中。许多框架将缓存的模板存储在文档根目录之外。
  • 这是 PHP 世界的错误假设 - 它假设它可以在任何地方编写。无论如何,我不是100%肯定,并且可以测试,但我认为该站点运行的用户,也可以从文档根目录开始写入一个目录。另一方面,您可以相当轻松地将 DOCUMENT_ROOT 的子文件夹设置为 non-public - 根本不由 Web 服务器提供服务。您可以使用 Apache 的 .htaccess 来执行此操作,也可以使用 IIS 的 web.config 来执行此操作。如果你不能指示你的框架在哪里写它的 temp,那么它的设计就会出现严重问题。
  • 这不是设计问题,应该允许 PHP 做任何其他服务器语言所做的事情。假设它以文档根为中心是错误的假设。
  • 好吧,在我的网络服务器设置中,我真的很担心任何网络工作者是否对系统的 TEMP 及其文档根目录以外的任何内容都有写权限。但这只是我。其他人可能决定使用 root 帐户运行 web worker ...
  • 您错误地认为我提倡使用 root 帐户运行。巨大的差异。权限在这里仍然适用——它们应该如此。这里手头的问题是将对文件系统的访问限制为仅在文档根目录下。
【解决方案2】:

如果有人在写入时遇到could not find a part of the path ... 错误,作为附加信息:确保您正在写入的文件夹已部署。在我的情况下,它是一个空的临时目录,在部署过程中被跳过。

【讨论】:

  • 哇!谢谢你的主意。我有一个空文件夹,所以它从未发布过!
【解决方案3】:

我提议使用 blob 容器来存储永久内容,无论虚拟机重新初始化或升级如何,这些内容都必须保留。

【讨论】:

  • Windows Azure 网站 以及 Windows Azure 虚拟机 使用 persisted 存储,因此不会丢失任何内容永远(在某种程度上可能会从 BLOB 中丢失某些东西)。这两个 Windows Azure 组件在 Azure 驱动器上运行,该驱动器使用 BLOB 进行持久化。您在谈论的是 Windows Azure Cloud Service,而问题是特定于 Azure 网站
  • 另外,您可以通过 Web 应用获得一定数量的免费存储空间,而您必须为 blob 容器付费,对吗?
【解决方案4】:

据我了解,您可以在 azure web 角色上写入驱动器,但问题是 web 角色可以有多个实例,因此将文件放在您要连接的任何节点上也不会放在上面其他节点,当该实例被回收时,它会返回到网络角色的原始图像,因此您会丢失文件。

但是,至少根据本文,可以在 Azure Web 角色节点的实例之间共享驱动器,然后您可以在网站下方设置一个虚拟文件夹,指向该共享驱动器并将其用于媒体存储。

http://blogs.msdn.com/b/windowsazurestorage/archive/2011/04/16/using-smb-to-share-a-windows-azure-drive-among-multiple-role-instances.aspx

我自己还没有尝试过,但是在搜索如何做到这一点时遇到了这个问题。

【讨论】:

    【解决方案5】:

    You can write to the HOME environment variable location (%HOME% / $HOME) 在 Azure 应用服务上。您可以使用 Kudu 或应用服务的控制台 cd 进入该目录并进行探索。

    【讨论】:

      【解决方案6】:

      如果您在 Azure 网站上询问 C:\ 驱动器或 D:\ 驱动器访问权限,答案是否定的。您无法在 Azure 网站上以这种方式访问​​文件系统。如果磁盘是 Web 角色(云服务)或虚拟机,您确实可以访问磁盘。

      但是,您可能已经知道,您可以使用 Wordpress 管理工具本身来编辑插件代码。

      【讨论】:

      • 您可以写入 D: 驱动器上的某些目录(例如 LogFiles)。
      猜你喜欢
      • 2015-11-26
      • 2012-12-14
      • 2022-08-20
      • 2014-03-02
      • 2013-06-19
      • 2014-06-22
      • 1970-01-01
      • 2012-11-05
      • 2015-05-03
      相关资源
      最近更新 更多