我在通过WPI安装的Win2k8/IIS7上运行WordPress(使用httpcache,fastCgi和UrlRewriter 2.0).一切似乎都运行正常(上传,通过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');
Run Code Online (Sandbox Code Playgroud)
我错过了配置选项或设置吗?WordPress需要牺牲一只小猫和/或阿尔及利亚人吗?
模拟和文件系统访问
建议在使用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下运行的应用程序池标识为在IIS设置.这样一来,所有的PHP脚本以确保在系统帐户下运行,依赖于网站的应用程序池(从其他网站隔离的话),并不能意外获取通过模拟太大众的访问.
| 归档时间: |
|
| 查看次数: |
7680 次 |
| 最近记录: |