Windows 系统提供了开箱即用的 Web 服务功能——“互联网信息服务”(IIS,Internet Information Services),可以结合 PHP 程序搭建原生 PHP 开发环境。本文以 Windows 11 Pro 为例详细介绍了配置步骤。
一、选择 PHP
PHP 提供了“线程安全”(TS, Thread Safe,)和“非线程安全”(NTS ,Non Thread Safe)两个版本。官方文档区分如下:
- TS 版适用于单进程多线程的服务器环境。例如通过 IIS 扩展 ISAPI(Internet Server Application Programming Interface)调用 PHP 的 IIS 5 和 IIS 6 或以模块方式在服务器中加载 PHP 的 Apache 等。由于这些方式需要同一进程内多个线程共享内存,为避免并发访问时产生非预期行为、竞争状态和数据损坏,必须保证线程安全。
- NTS 版适用于支持通过 FastCGI 或 PHP-FPM(仅支持类 Unix 系统)与 PHP 通信的服务器环境。例如使用 ngx_http_fastcgi_module 模块的Nginx、启用 FastCGI 功能的 Windows IIS 7(及之后的版本)、使用 mod_proxy_fcgi 的 Apache 等。由于每个请求由独立的进程处理,不存在线程共享内存的问题,因此无需线程安全,通常运行也更快更稳定。
PHP 从 5.3.0 版本开始默认支持 FastCGI,同时停止支持 ISAPI 并移除了 php5isapi.dll 文件;从 7.0.x 版本开始,彻底移除了与 ISAPI 相关的代码。
在 Windows 上,新版本的 PHP 和 IIS 只能通过 FastCGI 的方式与 PHP 通信,这也是官方文档中唯一提到的方式。因此,除非服务器环境仅支持单进程模式,建议选用 NTS 版本的 PHP。
二、下载 PHP
访问 PHP 官方下载页面,下载适用于你计算机处理器架构的 Zip 包。
- PHP 官方下载下面:https://www.php.net/downloads
对于大多数现代计算机,通常可以选择列表中的第一个 VS17 x64 Non Thread Safe 版本即可。
三、安装 PHP
将下载来下的 Zip 包解压缩,并将得到的文件夹重命名为 php,然后拷贝到 C:\Program Files 文件夹中。完整路径如下所示:
C:\Program Files\php
你也可以随意命名解压后的文件夹,只要用到时与之保持一致即可。
四、配置 PHP
为了在 Windows 中正常使用 PHP 相关功能,需要做如下必要配置。
1. 添加环境变量
为方便能在终端使用 PHP 命令行工具,需要将 PHP 的可执行程序所在目录添加到系统环境变量。具体步骤如下。
按下快捷键 Win + R 打开运行对话框,输入 sysdm.cpl 并按回车打开“系统属性”(System Properties)设置,切换到“高级”(Advanced)选项卡,点击“环境变量”(Environment Variables)打开“环境变量”设置。
这里有“用户变量”(User Variables)和“系统变量”(System Variables)两组变量,前者仅影响当前用户,后者则影响整个系统,也就是说其他用户也可访问。你可根据自己的需求选择,这里以“用户变量”为例。
双击列表中的 Path 打开“编辑环境变量”(Edit environment variables)窗口,点击右侧的“新建”(New)并将 PHP 的安装路径添加进去,点击“确定”(OK)即可。
打开终端,输入如下所示命令,正常情况下会显示 PHP 版本信息:
php -v
2. 修改配置文件
打开 PHP 程序文件夹,将 PHP 配置文件 php.ini-development 复制一份并重命名为 php.ini。然后用代码编辑器打开此文件,搜索指令 ;cgi.force_redirect,将其前面的注释符号 ; 删除,并将其值改成 0 后保存。如下所示:
cgi.force_redirect = 0
根据 PHP 官方文档的说明,该指令为大多数以 CGI 方式运行 PHP 的服务器提供安全防护,防止访客通过 URL 直接调用 PHP 文件,只允许解析服务器程序(如 Apache)重定向的请求。但在 IIS 中,该指令会导致拒绝访问的错误,因此需要按照 PHP 官方建议将其设为关闭。由于 IIS 本身具备独立的安全机制,因此关闭该指令不会带来额外的安全风险。
另外,还需要开启 PHP 应用可能需要的扩展。例如,PHP 应用需要使用 MySQL 和 SQLite 数据库,则需要搜索以下指令,确保删除它们前面的注释符号。
extension=pdo_mysql
extension=pdo_sqlite
根据不同的 PHP 应用,所需要的 PHP 配置也有所差异,你可以在遇到与配置相关的问题时,随时修改此文件。
五、安装 IIS
由于非服务器版本的 Windows,如本例使用的 Windows 11 Pro,默认未启用 IIS 功能,因此需要手动启用。具体方法如下。
使用快捷键 Win + R 打开运行对话框,输入 appwiz.cpl 并按回车,或依次点击【控制面板(Controle Panel) > 应用程序(Programs) > 程序和功能(Programs and Features)】,打开“程序和功能”窗口,然后点击左侧的“开启或关闭系统功能”(Turn Windows features on or off),打开“Windows 功能”(Windows Feature)设置窗口。
接下来,首先勾选“Internet Information Services”,然后依次展开【Internet Information Services > 万维网服务(World Wide Web Services) > 应用程序开发功能(Application Development Features)】,再勾选“CGI”功能,最后点击“确定”按钮开始安装。
六、配置 IIS
启用 IIS 后,还需要进行一些配置,使其能够解析 PHP 程序。
按下快捷键 Win + R 打开运行对话框,输入 inetmgr 并回车打开“Internet Information Servies (IIS) 管理器”(Internet Information Servies (IIS) Manager)。选中左侧边栏中的服务器根节点“YOURNAME – WINDOWS 主页”(这里的 YOUNAME 是你的系统用户名)。
注意,本例会为服务器根节点设置相关功能,如“处理程序映射”,这样新创建站点就会自动继承这些设置。如果已存在的站点没有自动继承,可以通过右键菜单的“恢复为父项”(Revert to Parent)手动恢复(此操作会清除当前所有设置);或者,也可以单独为其重新进行设置。
1. 添加默认文档
双击右侧窗口中的“默认文档”(Default Document)图标打开“默认文档”设置窗口。然后点击右侧边栏中的“添加”(Add)打开“添加默认文档”(Add Default Document)对话框,输入 index.php,点击“确定”完成添加。注意,要确保该项处于列表最顶端。
2. 添加程序映射
双击右侧窗口中的“处理程序映射”(Handler Mappings)图标打开“处理程序映射”设置窗口。然后点击右侧边栏的“添加模块映射”(Add Module Mapping)打开“添加模块映射”窗口,并按如下信息填写:
| 请求路径(Request path) | *.php | 仅解析 PHP 文件 |
| 模块(Module) | FastCgiModule | 使用 FastCGI 模块 |
| 可执行文件(Executable) | C:\Program Files\php\php-cgi.exe | PHP 中负责 CGI 功能的程序。也可通过按钮选择该程序 |
| 名称(Name) | PHP | 可随意填写 |
填写完毕后点击“确定”完成添加。
3. 设置目录权限
通常“默认站点”(Default Web Site)对应的文件夹,即 IIS 中所说的“物理路径”(Physical path),已经分配好了权限,所以访问不会出问题。而对于新建的站点,如果没有配置文件夹的权限,访问站点时会遇到如下所示的错误提示:
401.3 - Unauthorized
有两种方法可以可以解决此问题,你可以根据需要自行选择。
一种方法是更改文件夹的权限,添加用于匿名访问站点的“IUSR”用户:右键文件夹,点击“属性”(Properties),切换到“安全”(Security)选项卡,点击“组或用户名”(Group or user names)下方的“编辑”(Edit)打开“权限”窗口。然后点击“添加”(Add),在弹出的“选择用户或组”(Select Users or Groups)对话框中输入 IUSR,点击“确定”(OK)完成添加。接着在下方的“IUSR 的权限”(Permissions for IUSR)中勾选“完全控制”(Full control),最后点击“确定”(OK)保存设置。
另一种方法是修改 IIS 中的匿名身份验证,选用“应用程序池标识”作为匿名访问账户:选中站点,双击右侧面板中的“身份验证”(Authentication)图标进入设置面板,选中列表中的“匿名身份验证”(Anonymous Authentication),首先确保已处于“启用”(Enabled)状态,然后点击右侧边栏中的“编辑”(Edit),在弹出窗口中选择“应用程序池标识”(Application pool identity),点击“确定”(OK)完成更改。
七、测试环境
在左侧边栏选中一个站点,点击右侧边栏上方的“浏览”(Explore)打开站点目录,然后新建一个名为 index.php 的文件,输入如下内容并保存:
<?php phpinfo();
回到 IIS 中的站点界面,在右侧边栏中找到“浏览网站”(Browse Website)区域,点击浏览 *:80 (http)”(Browse *:80 (http))。如果一切正常,会转到网页浏览器并看到 PHP 信息页。
至此,在 Windows 上搭建的 IIS + PHP 基础开发环境就大功告成了。你可以在此基础上做更多修改和优化,以匹配你的 PHP 开发需求。
参考资料:
发表回复