【问题标题】:How to access mapped network drives using PHP running in IIS如何使用在 IIS 中运行的 PHP 访问映射的网络驱动器
【发布时间】:2020-03-24 21:40:51
【问题描述】:

我在 PHP (5.6) 中有这个 Web 系统,并且在 IIS 8.5 Windows Server 2012 R2 中运行。 我想做的是列出目录中的所有文件。我正在阅读的目录是另一台服务器的共享文件夹(Y:\sharedfolder)的映射网络驱动器。当我执行网络驱动器的命令目录时,php代码看不到它

我在网站上进行了搜索,看到了很多可能的解决方案,但对我来说没有任何效果。我不确定我做对了。所以我会在这里分享我当前的设置。

当我在 CLI 中运行 whoami 时,我得到“pc_name\administrator”。当我在代码中执行它时,我得到“iis apppool\cs2”。

映射的网络驱动器(Y:\sharedfolder)共享给以下:

  • 大家
  • 系统
  • 管理员 (pc_name\Administrator)
  • 管理员 (pc_name\Administrators)
  • IIS_IUSRS (pc_name\IIS_IUSRS)
  • CS2 (iis apppool\cs2)

我的 IIS 设置如下:

[认证]

  • 匿名身份验证(已启用,凭据:应用程序池身份)
  • ASP.NET 模拟(已禁用)
  • 表单身份验证(已禁用)

[应用程序池]

  • CS2(.NET CLR v4.0,托管管道模式:集成,身份:ApplicationPoolIdentity,加载用户配置文件:True)
  • DefaultAppPool(.NET CLR v4.0,托管管道模式:集成,身份:ApplicationPoolIdentity,加载用户配置文件:True)

[快速 CGI 设置]

  • C:\php\php-cgi.exe(协议 Tcp)

[网站:CS2]

  • 网站名称:CS2
  • 应用程序池:CS2
  • 物理路径:C:\inetpub\wwwroot\cs2
  • 以“管理员”身份连接

这些都是我的设置,但我仍然无法访问映射的网络驱动器。我的 IIS 中是否存在缺失或不正确的设置?

【问题讨论】:

标签: php iis


【解决方案1】:

不确定它是否适用于映射驱动器、IIS 和 PHP。但建议使用 UNC 路径。

当您运行 whoami 时,您的应用程序将其作为您的登录用户执行。但是,当您在 IIS 中托管 Web 应用程序时。该应用程序在应用程序池身份下运行,并通过匿名用户访问文件。

如果您的共享文件夹服务器和 IIS 服务器在同一个域中。然后,您可以尝试将应用程序池标识设置为具有足够权限访问该文件夹的域帐户。然后请转到匿名身份验证并编辑它以使用应用程序池身份

如果您的共享文件夹服务器和 IIS 服务器是两个独立的工作站。然后您可能需要创建一个具有相同用户名和密码的用户。然后授予用户读/写权限以访问 UNC 路径。最后,您只需为该用户设置匿名用户和应用程序池身份。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多