Windows中使用IIS搭建PHP开发环境以及支持WordPress

摘要

本文通过在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,然后配置反向代理。

admin