使用新的应用程序池标识特性时,在PHP/IIS 8中创建符号链接


Creating symbolic links in PHP/IIS 8 when using the new Application Pool Identity feature

我正在运行IIS 8, Server 2012。我有一个web应用程序,其中的程序员要创建符号链接。下面是一些示例代码:

$target = 'symlink.php';
$link = 'symlink-link.php';
symlink($target, $link);
echo readlink($link);

我得到以下错误:

PHP Warning:  symlink(): Cannot create symlink, error code(1314) in E:'...'test.php on line 7

我已经授予"IIS appool 'apppooluser"NTFS修改权限。我已将用户权限分配给'创建符号链接'的同一用户。

我无法让这个应用程序创建链接。有什么建议吗?使用IIS APP池是不可能的吗?

试着回答php.net上的评论

在IIS (Internet Information Services)中,您需要设置权限到允许创建符号链接。

进入"本地安全策略->本地策略->用户权限"分配,右键单击创建符号链接->属性->添加用户或组,并添加"IUSR"用户,这应该是用户与IIS相关联。可能需要重新启动。

如果这不起作用,转到IIS管理器->身份验证->选择匿名身份验证->编辑并输入您当前的登录名用户,应该是管理员。点击确定,现在输入符号链接()函数应该可以正常工作。

我能够得到符号链接工作下的网站,点击身份验证->匿名身份验证->特定用户,并有一个真正的windows帐户下运行的网站。该帐户具有创建链接的NTFS权限和用户权限分配,但不是管理员。

应用程序池仍然可以以应用程序池身份运行。

然而,据我所知,使用应用程序池身份应该是更安全的方法。我仍然想知道是否有一种方法,使符号链接工作,而使用应用程序池的身份。