[英]Resolving Permissions Problems for WordPress on IIS7
我在通过WPI安装的Win2k8 / IIS7(使用httpcache,fastCgi和UrlRewriter 2.0)上运行WordPress。 一切似乎都工作正常(上传,通过Live Writer发布,注释,插件,漂亮的URL)。
我正在尝试将WordPress更新到最新版本,但出现如下错误:
下载失败。 文件流的目标目录不存在或不可写
这与尝试下载主题或更新插件时遇到的错误相同。
事件日志中没有错误,并且WordPress并没有真正告诉我它要查找的目录,它认为正在使用的用户或缺少的权限。
我已经进行了两次(三次)检查,以确定是否已设置IIS App Pool用户,并且该目录具有对该用户的修改权限,最后,这些权限已传播到子文件夹中。
在Google博士的建议下,我还向配置文件添加了以下设置:
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
define('WP_TEMP_DIR', ABSPATH . 'wp-content/');
define('FS_METHOD', 'direct');
我是否缺少配置选项或设置? WordPress是否需要牺牲一只小猫和/或阿尔及利亚degu?
模拟和文件系统访问
建议使用IIS时在PHP中启用FastCGI模拟。 这由php.ini文件中的fastcgi.impersonate指令控制。 启用模拟功能后,PHP将代表由IIS身份验证确定的用户帐户执行所有文件系统操作。 这样可以确保即使在不同的IIS网站上共享相同的PHP进程,只要每个网站上的IIS身份验证使用不同的用户帐户,这些网站中的PHP脚本也将无法访问彼此的文件。
例如,IIS 7在其默认配置中启用了匿名身份验证,并将内置用户帐户IUSR用作默认身份。 这意味着,为了使IIS执行PHP脚本,必须向IUSR帐户授予对这些脚本的读取权限。 如果PHP应用程序需要对某些文件执行写操作或将文件写到某些文件夹中,则IUSR帐户应对此具有写权限。
如“我应该通过FastCGI模拟PHP吗?”中讨论的那样。 关于ServerFault的问题,是否要授予匿名用户对服务器的写访问权,存在安全性问题。 例如,如果您还启用了WebDAV模块,则任何人都可以使用此协议写入目录!
因此,我的建议是:
ApplicationPoolIdentity
。 fastcgi.impersonate = 0
禁用php.ini中的模拟,因此PHP在IIS中设置的“ 应用程序池标识”下运行。 这样,可以确保所有PHP脚本都在系统帐户下运行,并与站点的应用程序池关联(将其与其他站点隔离),并且不会通过模拟意外地获得过多的公共访问权限。
如果我错了,请指正我,但我相信以下配置可提供相同的好处,并且也尊重PHP所需的fastcgi.impersonate = 1设置。
步骤1,2和4相同-步骤3不同。
我们不授予IUSR或IIS_IUSRS访问Webroot的权限。 所有权限都分配给IIS AppPool \\ MyAppPoolName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.