我有一个运行PHP应用程序的IIS 7服务器。 此应用程序需要能够连接到具有所需的用户名和密码的networking驱动器。 该驱动器在login时连接到net use \\server /user: 。 用户不是login用户。 我怎样才能连接这个驱动器在应用程序中使用?
我曾尝试将应用程序池更改为我的用户,但仍然被拒绝。 我已经尝试运行一个batch file作为系统中的净使用。 我已经尝试了一个虚拟目录,但它不喜欢所需的用户名。 用户名包含\和。 用户也不是Windows认可的用户。 我无法控制networking驱动器访问它。
我会使用备用凭据映射networking驱动器,然后让PHP应用程序连接到相应的驱动器号。 请记住,如果Windows无法访问驱动器,那么PHP不会,因为PHP不理解Windows身份validation。
我有一个类似的问题,我需要访问networking共享,并使用以下步骤解决它:
1)在前端服务器和文件服务器上创build一个具有相同用户名和密码的帐户。 确保密码不会过期或必须更改。
2)创build一个networking共享,并给予新帐户的读/写权限。 我还testing了我可以使用新帐户从前端服务器进行连接,以validation没有防火墙。
3)在前端服务器上,我将帐户包含在IIS_IUSRS组中,间接地将其login为批处理作业权限。
4)运行以下命令授予该帐户的权限
aspnet_regiis -ga <your_app_pool_user>
查看更多: 如何:为ASP.NET 2.0应用程序创build服务帐户(MSDN)
5)重新启动WAS和IIS,以确保如果尝试使用该帐户,帐户组成员身份的更改将被搁置。
C:> net stop was /y C:> net start w3svc
6)创build一个应用程序池,并在高级设置中设置身份。
在尝试设置标识时,这是我在Windows Server 2012上的IIS 8上出现错误消息的部分。
从IISpipe理器中我得到了下面的错误对话框:“执行此操作时出错。详细信息:值不在预期的范围内。
尝试从命令行设置应用程序池标识我收到类似的错误:
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. )
当我删除最后一个参数,密码,该命令将成功改变身份types和设置用户名,但我从来没有找出为什么我不能设置密码,所以我反驳编辑我的applicationHost.config文件直接。 不幸的是密码以明文结尾。
<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应用程序使用应用程序池,它可以访问networking共享没有任何问题。