我有一台 IIS 7 服务器,上面正在运行一个 PHP 应用程序。此应用程序需要能够连接到需要用户名和密码的网络驱动器。此驱动器在用户登录时连接net use \\server /user:
。该用户不是登录用户。我如何连接此驱动器以供应用程序使用?
我尝试将应用程序池更改为我的用户,但仍然被拒绝。我尝试运行批处理文件,其中的 net use 为系统。我尝试使用虚拟目录,但它不喜欢所需的用户名。用户名包含 \ 和 。该用户也不是 Windows 可识别的用户。我无法控制网络驱动器,只能访问它。
答案1
我遇到了类似的问题,我需要访问网络共享,并使用以下步骤解决了它:
1) 在前端服务器和文件服务器上创建具有相同用户名和密码的帐户。确保密码未过期或必须更改。
2) 创建网络共享并授予新帐户读/写权限。我还测试了是否可以使用新帐户从前端服务器进行连接,以验证没有防火墙阻碍。
3)在前端服务器上,我将帐户包含在IIS_IUSRS组中,间接授予其以批处理作业身份登录的权限。
4)运行以下命令为该账户授予权限
aspnet_regiis -ga <your_app_pool_user>
查看更多:如何:为 ASP.NET 2.0 应用程序创建服务帐户 (MSDN)
5)重新启动 WAS 和 IIS,以确保在尝试使用该帐户时对帐户组成员身份的更改生效。
C:> net stop was /y
C:> net start w3svc
6)创建应用程序池并在高级设置中设置身份。
这是我在 Windows Server 2012 上的 IIS 8 上尝试设置身份时遇到错误消息而卡住的部分。
我从 IIS 管理器收到以下错误对话框:“执行此操作时出现错误。详细信息:值不在预期范围内。”
尝试从命令行设置应用程序池标识时收到类似的错误:
C:> appcmd set config /section:applicationPools
/[name='test-pool'].processModel.identityType:SpecificUser
/[name='test-pool'].processModel.userName:MyAccountName
/[name='test-pool'].processModel.password:P@ssw0rd
ERROR ( hresult:80070057, message:Failed to commit configuration changes.
The parameter is incorrect.
)
当我删除最后一个参数密码时,该命令将成功更改身份类型并设置用户名,但我从来没有弄清楚为什么我无法设置密码,所以我反驳编辑我的应用程序主机配置文件。不幸的是,密码最终以明文形式出现。
<configuration>
...
<system.applicationHost>
<applicationPools>
...
<add name="test-pool" managedRuntimeVersion="v4.0">
<processModel identityType="SpecificUser"
userName="MyAccountName" password="P@ssw0rd" />
</add>
...
</applicationPools>
...
</system.applicationHost>
...
</configuration>
7)最后,我将我的 Web 应用程序设置为使用应用程序池,它可以毫无问题地访问网络共享。
答案2
我将使用备用凭据映射网络驱动器,然后让 PHP 应用程序连接到适当的驱动器号。请记住,如果 Windows 无权访问驱动器,则 PHP 无权访问,因为 PHP 不理解 Windows 身份验证。