我需要一个PHP脚本才能在目录中拥有写入权限。 PHP 5.3在IIS 7下运行为FastCGI,Windows Server 2008为OP。在我的php错误日志中,当脚本尝试写入文件时,我得到了“权限被拒绝”。
我该如何解决这个问题?我试图将所有权利交给IIS_IUSR和IUSR_myservername(右键单击我的文件夹),但它没有用。
任何帮助都会非常感激,
此致
于连
答案 0 :(得分:66)
我有相同的设置,我必须给予写入权限:
IUSR
IIS AppPool\<<AppPoolName>>
答案 1 :(得分:23)
实际上,它有点复杂。
首先要做的是在相关网站上创建一个简单的PHP文件。 (在相关网站上创建文件很重要,因为每个网站可以有不同的设置。)此文件的内容应为:
<?php var_dump(ini_get('fastcgi.impersonate')); ?>
使用浏览器导航到此文件。
**案例1 **
如果您的浏览器显示:
string(1) "1"
然后,您需要执行以下命令(您需要使用您在IIS中为您的网站命名的名称替换“默认网站”):
%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication
您将收到如下答案:
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" userName="IUSR" />
</authentication>
</security>
</system.webServer>
您要查找的信息是username
代码的anonymousAutthentification
属性的值。
IIS AppPool\AppPoolName
授予写入权限(将“AppPoolName”替换为网站应用程序池的名称)。**案例2 **
如果您的浏览器显示:
string(1) "0"
您需要向IIS AppPool\AppPoolName
授予写入权限(将“AppPoolName”替换为您网站应用程序池的名称)。
答案 2 :(得分:9)
您需要提供 PHP 写入权限,而不是IIS。这意味着运行PHP的用户帐户需要权限(可能与运行IIS的用户帐户相同)。