使用 Visual Studio(无 WebMatrix)在 IIS Express 上启用 PHP

Posted

技术标签:

【中文标题】使用 Visual Studio(无 WebMatrix)在 IIS Express 上启用 PHP【英文标题】:Enabling PHP on IIS Express with Visual Studio (sans WebMatrix) 【发布时间】:2011-08-31 05:53:57 【问题描述】:

我正在开发这个主要是 .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?如果是,怎么做?

【问题讨论】:

【参考方案1】:

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

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

    在 Visual Studio 中配置您的 WebSite/WebApplication 项目以使用 IIS Express。看看这个帖子How do I configure a website project to use IIS Express?

    要在 IIS Express 上启用 PHP,请安装 PHP 并更新 applicationhost.config (%userprofile%\documents\iisexpress\config\applicationhost.config)。您可以使用位于 IIS Express 安装文件夹中的 appcmd.exe 版本来执行此操作。详情请见this link。

如果所有内容都安装在美国英语版 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,或许你应该看看这个帖子:Debug Your .NET Web Project With IIS Express

【讨论】:

要在 IIS Express 上启用 PHP,请安装 PHP 并手动更新 applicationhost.config (%userprofile%\documents\iisexpress\config\applicationhost.config)。您可以使用位于 IIS Express 安装文件夹中的 appcmd.exe 来执行此操作。以下链接将帮助您配置 PHP learn.iis.net/page.aspx/246/…(在此查找“配置 IIS 7 以使用命令行处理 PHP 请求”) 可以在 IISExpress 上运行 PHP 真是太棒了! 我只是想在 Visual Studio 2012 中添加这一点,其中 90% 已经完成。我所要做的就是下载/安装 PHP,运行命令提示行将 FastCGI 映射到我的 PHP 文件夹,一切都很好。谢谢! 请务必仔细检查您机器上 php-cgi.exe 的位置。就我而言,使用 WebPI 安装 PHP 会导致 php-cgi.exe 的版本特定位置:C:\Program Files (x86)\PHP\v5.5\php-cgi.exe 如果您有 VS 2012 或 VS 2013,将内置 IIS Express。在这种情况下,设置过程要简单得多,如下所示codingterminal.com/articles/052015/1/…【参考方案2】:

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

打开Web平台安装程序(可从http://go.microsoft.com/fwlink/?LinkId=255386下载)

为 IIS Express 搜索 PHP

点击安装

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

【讨论】:

网络平台安装 5.0 超级简单。谢谢【参考方案3】:

较新版本的 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。

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于使用 Visual Studio(无 WebMatrix)在 IIS Express 上启用 PHP的主要内容,如果未能解决你的问题,请参考以下文章

混入 Visual Studio 2015 - 无设计视图

使用Microsoft Visual Studio 2019进行unity开发代码无智能提示

使用 Visual Studio(无 WebMatrix)在 IIS Express 上启用 PHP

带有 ASP.NET Core 的 Visual Studio 2019 挂起(无响应)

Blend for Visual Studio 2012 - 无设计视图

Visual Studio Installer(2017)点击 无反应 也无错误日志