我正在研究这个主要是.NET的Web应用程序,但是一部分是用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?如果是,怎么样?
答案 0 :(得分:22)
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
答案 1 :(得分:13)
另一个选择是使用Web平台安装程序。
打开Web平台安装程序(可从http://go.microsoft.com/fwlink/?LinkId=255386下载)
为IIS Express搜索PHP
点击安装
Web平台安装程序将安装PHP并为您配置IIS Express。
答案 2 :(得分: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\{{YOUR PHP VERSION}}\php-cgi.exe"'] /apphostconfig:"C:\{{YOUR PROJECT}}\.vs\config\applicationhost.config" "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\{{YOUR PHP VERSION}}\php-cgi.exe"',resourceType='Unspecified'] /apphostconfig:"C:\{{YOUR PROJECT}}\.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 /处理程序强>
<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。
答案 3 :(得分:2)
如果您通过Visual Studio运行IIS,则需要使用php处理程序更新解决方案目录中的.vs \ config \ applicationhost.config