本文通过在IIS中搭建PHP开发环境,并调试WordPress开发的网站主页,对于操作过程中遇到的问题做梳理。
本文通过在IIS中搭建PHP开发环境,并调试WordPress开发的网站主页,对于操作过程中遇到的问题做梳理。
1 让IIS支持PHP
Windows默认自带的Web服务器是IIS(Internet Information Services),支持ASP和.Net(aspx),如果要支持对PHP文件的解析,可以通过以下两种方式:
(1)通过FastCGI,将扩展名为.php的文件指定到PHP官方的fast CGI引擎中去解析。
(2)使用反向代理,将指定网站反向代理到Apache服务商,或者php-fpm服务进程中。
我们这里通过第一种方式,即FastCGI,在IIS的全局,或者指定网站,选择“处理程序映射”这个功能模块。
在“处理程序映射”这个功能模块中的设置方式如下图:
我们这里的PHP的可运行文件可以直接从PHP的官网下载,目前主流的版本是7.0系列的,其中7.3和7.4版本差别已经比较大了,对于PHP 8.0,建议先观望,目前对于向下兼容还有很对问题。
1.1 PHP的extension扩展的设置
在php的ext目录下有文件 php_mysqli.dll,需要在php.ini中放开注释:
extension_dir = "C:\php-8.1.7-nts-Win32-vs16-x64\ext"
extension=mysqli
设置完成后,在IIS中重启对应的应用程序池:
2 安装MySQL数据库
PHP的开发环境搭配MySQL数据库,是Web开发的黄金组合。在Windows上安装和运行MySQL数据库,建议使用可执行的Binary安装版本,如果使用类似Linux的命令行方式,则会遇到很多需要处理的兼容问题。自带的Workbench控制台,在管理数据库进程方面操作也非常方便,可以同时搭配Navicat和PHPMyAdmin等第三方工具。
3 IIS的500错误的处理
出于网站安全考虑,IIS默认是隐藏真实的错误信息的,但是这给开发和调试带来很多麻烦。显示真实错误信息的设置如下:
4 IIS下Wordpress伪静态
启用“URL重写”(通过安装IIS插件实现),在网站的根目录下会自动生成web.config文件。为了实现wordpress的伪静态,需要修改文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="category">
<match url="category/?(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="/index.php?category_name={R:1}" appendQueryString="false" logRewrittenUrl="false" />
</rule>
<rule name="tags">
<match url="tag/?(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="index.php?tag={R:1}" />
</rule>
<rule name="Main Rule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:0}" />
</rule>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule></rules>
</rewrite>
</system.webServer>
</configuration>
5 IIS中的其他设置
5.1 新建网站和绑定域名
选中具体一个网站,右键“编辑绑定”,可以绑定域名。
5.2 IIS的反向代理
必须按照插件ARR,然后配置反向代理。