我正在运行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权限和用户权限分配,但不是管理员。
应用程序池仍然可以以应用程序池身份运行。
然而,据我所知,使用应用程序池身份应该是更安全的方法。我仍然想知道是否有一种方法,使符号链接工作,而使用应用程序池的身份。