WindowsAzure : Is it possible to set directory permissions within the web. 配置?

标签 windows iis permissions azure logging

我的一个PHP脚本想要写入日志文件夹,产生的错误是:

Unable to open the log file "E:\approot\framework\log/dev.log" for writing.

当我手动设置 WebRole 用户 RD001 的写入权限时,它工作正常。 现在我想自动设置文件夹权限。有没有一种简单的方法可以完成它? 请注意,我对 IIS 及其相关内容非常陌生,我希望得到准确的答案,谢谢。

最佳答案

简短/技术响应:

您可能可以使用完全信任和启动任务来设置特定文件夹的权限。但是,您需要考虑无状态操作系统并在此脚本中更改驱动器号(可能,不太可能),这会使事情变得困难。此外,本地存储不会持久保存,因此您无法确保在重新启动时保留这些数据。

建议:不要写本地内容,请阅读下文...

编辑:必须考虑这一点,虽然我仍然建议不要这样做,但还有第三个选项:您可以在服务配置中分配本地存储,然后使用 dll 引用从 PHP 访问它,然后您就可以访问到该文件夹​​。请记住,本地存储不会持久保存,因此在重新启动时它就会消失。

本地服务配置: http://blogs.mscommunity.net/blogs/dadamec/archive/2008/12/11/azure-reading-and-writing-with-localstorage.aspx

从 php 访问配置: http://phpazure.codeplex.com/discussions/64334?ProjectName=phpazure

<小时/>

长/详细回复:

在 Azure 中,我们确实鼓励您将事物视为平台而不是“服务器上的软件”。我的意思是,诸如“将某些内容写入本地日志文件”之类的想法与云“想法”有些不兼容。根据您的使用情况,您可以(并且应该)转换此脚本以将此数据输出到某些基于云的或外部存储,而不是仅仅将其放置在磁盘上。

我建议修改此脚本以利用 PHP Azure SDK 并将这些日志条目写入 Azure 中的表或 blob 存储。如果这听起来不错,请提供 PHP,我可以给出一个确切的例子。

主要原因(除了插入云理念之外)是在 Azure 中,您不能假设主机(“角色实例”)将维护操作系统状态,因此虽然您可以设置一些内容,例如文件夹权限,你不能指望他们会坚持这样。当结构必须更新您的角色并对某些较低级别的问题使用react时,您没有真正的方法来保证这些权限不会被重置。例如,当前实例所在机架上的硬盘驱动器笼可能会发生故障。如果故障足够严重,Fabric Controller 将需要重建您的实例。当发生这种情况时,您的代码将被移动到完全不同的服务器,因此需要重新设置这些权限。另外,根据更改的情况,E:\可能会突然需要成为 F:\或 X:\驱动器,而您却不会知道。

最好(在某种程度上)假装您的应用程序正在“Azure 中”运行,而不是“在 Azure 中的服务器上”运行,这样您就无需对托管环境做出任何假设。因此,您在代码之外需要的任何内容(数据、日志、审核等)都应该存储在您可以控制的地方(Azure 存储、外部调出等)

关于WindowsAzure : Is it possible to set directory permissions within the web. 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5106179/

相关文章:

c++ - 如何从网络逻辑磁盘名获取物理磁盘索引?

ASP.Net 哪个用户帐户在 IIS 7 上运行 Web 服务?

authentication - Service Stack 与 IIS 中用于服务文件的性能

django - 以编程方式向组添加权限的正确方法是什么

python - 如何在 Windows 中用 Python 抛出一个错误窗口

windows - 在批处理文件中使用重定向

windows - 是否有适用于 Windows 的 HTTP Live Streaming 客户端?

c# - IIS 10 上的 ASP.NET Core 404 错误

android - 如何列出我的安卓设备的内容

android 权限 vs linux 权限