我正在 Windows Server 2012 R2 上的 IIS 8.5 上设置 PHP 应用程序。我之前已经在几台 Windows Server 2008 R2 和 Windows Server 2012 机器上成功设置了这个应用程序,但这是我使用的第一台 2012 R2 机器。
PHP 应用程序具有它需要写入的目录log
。cache
在以前的所有机器上,我都将 PHP 站点设置为在默认应用程序池中运行,然后授予该IIS_IUSRS
组读取整个站点和写入这些目录的权限。到目前为止,这在我使用过的所有以前的服务器上都有效。
然而,在这台新服务器上,PHP 仍然表示它没有写入所需位置的权限。
我在任务管理器中检查以确保 IIS 进程(和 PHP CGI 进程)以预期用户身份运行,并发现它们DefaultAppPool
按预期运行。但是,权限似乎不起作用。我尝试停止并重新启动 IIS,回收应用程序池,并将IIS AppPool\DefaultAppPool
用户权限直接添加到文件夹中,但这些都没有帮助。
这里有什么问题?当它在四台较旧的服务器上完全没有问题时,为什么这不起作用?
似乎存在某种文件系统级别或操作系统级别的权限缓存,因为该问题似乎在系统完全重新启动后自行解决(即使重新启动 IIS (
W3SVC
) 并回收应用程序池确实应该解决此问题)。