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


Enabling PHP on IIS Express with Visual Studio (sans WebMatrix)

我正在开发这个web应用程序,它主要是.NET,但有一部分是用PHP编写的。在我的开发环境中,IIS Express是我选择的web服务器,所以我更喜欢让PHP和.NET在这个环境中协同工作。

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

  • 安装PHP并正确配置处理程序
  • 为此网站安装并启用PHP
  • 如果您正在使用WebMatrix,请按照以下步骤启用PHP:
    • 在WebMatrix中打开网站
    • 选择"站点"工作空间,然后单击"设置"
    • 选中"启用PHP"复选框以安装并启用PHP

不使用WebMatrix,这对我没有任何帮助。然后我在谷歌上深入搜索与IIS Express和PHP相关的任何内容。从我读到的内容来看,这应该是可行的,但我发现的关于这个主题的一切似乎都假设我的IDE是WebMatrix。事实并非如此。

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

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中,将您的网站/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项目

另一个选项是使用Web平台安装程序。

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

  • 搜索IIS Express 的PHP

  • 单击"安装"

Web平台安装程序将为您安装PHP并配置IIS Express。

Visual Studio的较新版本维护IIS Express的配置文件"applicationhost.config"的单独副本。联机的大多数说明都向您展示了如何以applicationhost.configmaster文件为目标,该文件无效,因为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/ssection:system.webServer/fastCGI/+[fullPath='"C:''Program Files"C:''Program Files(x86)''IIS Express''appcmd.exe"set config/section:system.webServer/handlers/+[name='HP_via_FastCGI',path='*.PHP',verb='*',modules='FastCgiModule',scriptProcessor='"C:''Program Files

或者,您也可以在文本编辑器中编辑项目的applicationhost.config,然后添加以下部分。

system.webServer/fastCGI

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

system.webServer/处理程序

<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。

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