【发布时间】:2012-12-14 19:11:50
【问题描述】:
我正在尝试从浏览器连接到网络共享(通过它是 UNC),但无法连接。
如果我从命令行运行我的脚本,一切都很好,我可以访问共享。我还可以通过 Windows 的文件资源管理器导航到它,所以我认为我的代码或我的 Windows 帐户的权限没有任何问题。
我的脚本如下所示:
$dir = '\\\\some\path';
if (is_dir($dir))
{
echo 'dir exists';
}
else
{
echo 'dir does not exist';
}
我也尝试过使用DirectoryIterator($dir),但这会引发此异常错误:
PHP Warning: opendir(...): Access is denied. (code: 5)
这是我的设置:
- Windows Server 2008 R2
- IIS 7.5
- PHP 5.3.13
- 匿名身份验证已禁用
- 启用 Windows 身份验证
我的 php.ini 中有这些配置设置:
cgi.force_redirect=0
cgi.fix_pathinfo=1
fastcgi.impersonate=1
为了增加混乱,我能够在以下情况下通过浏览器进行连接:
1 - 使用 system("net use \"".$dir."\" ".$pass." /user:".$user." /persistent:no>nul 2>&1"); 但这需要硬编码用户的 Windows 身份验证密码,我不能这样做。
2 - 设置fastcgi.impersonate=0 但这意味着用户每次点击脚本时都必须进行身份验证,这是不可接受的。
3 - 启用匿名身份验证,禁用 Windows 身份验证,但我需要启用 Windows 身份验证才能知道谁在访问该站点。
我不知道这是否与我的问题有关,但是从浏览器和命令行运行我的脚本时,$_SERVER['USERNAME'] 的值不同。
这是权限问题吗?是否存在未传递的身份验证令牌?
编辑
不幸的是,在这种情况下,将共享映射到网络驱动器不是一种选择。
【问题讨论】:
标签: php iis network-share