16

我正在开发这个主要是 .NET 的 Web 应用程序,但其中一部分是用 PHP 编写的。在我的开发环境中,IIS Express 是我选择的 Web 服务器,因此我更希望 PHP 和 .NET 在此环境中协同工作。

第一次天真的尝试:只需将 PHP 脚本放入网站,然后将它们加载到浏览器中。结果是HTTP Error 404.21 - Not Found带有以下建议:

  • 正确安装 PHP 并配置处理程序。
  • 为此网站安装并启用 PHP。
  • 如果您使用的是 WebMatrix,请按照以下步骤启用 PHP:
    • 在 WebMatrix 中打开网站。
    • 选择站点工作区并单击设置。
    • 选中“启用 PHP”复选框以安装和启用 PHP。

不使用 WebMatrix,这对我没有任何帮助。然后,我继续在 Google 上深入搜索与 IIS Express 和 PHP 相关的任何内容。从我阅读的内容来看,它应该是可行的,但我发现的关于该主题的所有内容似乎都假设我的 IDE 是 WebMatrix。它不是。

有谁知道是否可以在 IIS Express 上安装并将其配置为与基于 Visual Studio 的网站一起使用,而无需安装 WebMatrix?如果是,如何?

4

4 回答 4

23

IIS Express 支持没有 Web 矩阵的 PHP。您可以单独安装 IIS Express 并使其与 Visual Studio 一起使用。为此,您需要 Visual Studio 2010 SP1。

  1. 从此链接下载 IIS Express:Internet Information Services (IIS) 7.5 Express

  2. 在 Visual Studio 中,将您的 WebSite/WebApplication 项目配置为使用 IIS Express。看看这个线程如何配置网站项目以使用 IIS Express?

  3. 要在 IIS Express 上启用 PHP,请安装 PHP 并更新 applicationhost.config (%userprofile%\documents\iisexpress\config\applicationhost.config)。您可以使用位于 IIS Express 安装文件夹中的 appcmd.exe 版本来执行此操作。有关详细信息,请参阅此链接

如果所有内容都安装在美国英语版 Windows 的默认位置,则命令将是:

"C:\Program Files (x86)\IIS Express\appcmd.exe" set config /section:system.webServer/fastCGI /+[fullPath='"C:\Program Files (x86)\PHP\php-cgi.exe"']
"C:\Program Files (x86)\IIS Express\appcmd.exe" set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='"C:\Program Files (x86)\PHP\php-cgi.exe"',resourceType='Unspecified']

请注意,如果 php-cgi.exe 的完整路径中有空格,则必须将路径用单引号和双引号括起来,如上例所示。

最后,如果您没有 VS 2010 SP1,或许您应该看看这篇文章:使用 IIS Express 调试您的 .NET Web 项目

于 2011-05-23T16:25:50.980 回答
14

另一种选择是使用 Web 平台安装程序。

Web Platform Installer 将为您安装 PHP 并配置 IIS Express。

于 2014-03-12T10:18:03.333 回答
5

较新版本的 Visual Studio 维护 IIS Express 的配置文件“applicationhost.config”的单独副本。大多数在线说明向您展示了如何定位主 applicationhost.config 文件,该文件无效,因为 VS2017 维护一个单独的副本并在启动 IIS express 时使用此副本。要在这种情况下启用 PHP,我必须编辑 VS2017 的私有副本。

  • 先决条件 - 使用 Web 平台安装程序安装 PHP。(您不需要 IIS Express,只需常规的 PHP 下载。)您可以使用 x86 或 x64。这会将 PHP 安装到 C:\Program Files\ 或 C:\Program Files (x86)\ 中,具体取决于您选择哪一个。你也可以简单地从他们的网站上获取 PHP。

  • 找到项目的 applicationhost.config。它位于隐藏的 .vs 子文件夹中。例如 C:\MyProject\.vs\applicationhost.config

  • 从命令窗口运行以下命令,用您的路径替换项目文件夹和您安装的 PHP 二进制文件。

"C:\Program Files (x86)\IIS Express\appcmd.exe" set config /section:system.webServer/fastCGI /+[fullPath='"C:\Program Files (x86)\PHP\{{您的 PHP 版本}}\php-cgi.exe"'] /apphostconfig:"C:\{{你的项目}}\.vs\config\applicationhost.config"
"C:\Program Files (x86)\IIS Express\appcmd.exe" 设置配置 /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*', modules='FastCgiModule',scriptProcessor='"C:\Program Files (x86)\PHP\{{YOUR PHP VERSION}}\php-cgi.exe"',resourceType='Unspecified'] /apphostconfig:"C:\ {{您的项目}}\.vs\config\applicationhost.config"

或者,您可以简单地在文本编辑器中编辑项目的 applicationhost.config 并添加以下部分。

system.webServer/fastCGI

<fastCgi>
    <application fullPath="C:\Program Files (x86)\PHP\v7.1\php-cgi.exe" />
</fastCgi>

system.webServer/handlers

<add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v7.1\php-cgi.exe" resourceType="Unspecified" />

需要明确的是,编辑 IIS Express\AppServer\applicationhost.config 或 %appdata% 文件夹中的文件将无济于事,除非您正在执行一些高级操作,例如在 Visual Studio 之外启动 IIS Express。

于 2017-07-11T19:53:11.467 回答
2

如果您通过 Visual Studio 运行 IIS,则需要使用 php 处理程序更新解决方案目录中的 .vs\config\applicationhost.config

于 2016-03-22T02:38:37.457 回答