使用 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的主要内容,如果未能解决你的问题,请参考以下文章
使用Microsoft Visual Studio 2019进行unity开发代码无智能提示
使用 Visual Studio(无 WebMatrix)在 IIS Express 上启用 PHP
带有 ASP.NET Core 的 Visual Studio 2019 挂起(无响应)