首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Windows 下 PHP 三种运行模式详解:模块化、CGI、FastCGI 配置图文教程

     編輯:PHP 綜合知識

概述

Windows + Apache 环境下,PHP 有三种运行方式:模块模式 (mod_php)、CGI 模式、FastCGI 模式。本文以 PHP 5.x + Apache 2.2 为例,图文演示完整配置流程。

通用基础配置 (三种模式共用)

  1. 解压 PHP 到 C:/PHP5/。
  2. 复制 php.ini-development 为 php.ini。
  3. 编辑关键项:
    error_reporting = E_ALL
    display_errors = On
    extension_dir = "C:/php5/ext"
    date.timezone = Asia/Shanghai

方式一:模块模式 (mod_php) —— 最简单、性能较好

Apache httpd.conf 配置

# 加载 PHP 模块 (线程安全版 TS)
LoadModule php5_module "C:/php5/php5apache2_2.dll"
PHPIniDir "C:/php5/php.ini"

# 识别 .php 文件
AddType application/x-httpd-php .php

# 目录索引添加 index.php
DirectoryIndex index.html index.php

验证

htdocs 下新建 index.php:<?php phpinfo(); ?>,访问 https://localhost/,看到 Server API: Apache 2.0 Handler 即成功。

特点

  • PHP 运行在 Apache 进程内,共享内存,启动快。
  • 修改 php.ini 需重启 Apache。
  • 非线程安全 (NTS) 版本不可用。

方式二:CGI 模式 —— 进程隔离、性能差、已淘汰

php.ini 额外配置

cgi.force_redirect = 0

Apache 配置

# 移除模块模式配置
# LoadModule php5_module ...
# PHPIniDir ...

# 启用 CGI 处理
AddHandler cgi-script .cgi
ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"

# 在 cgi-bin 目录放入 test.cgi
#!C:/php5/php-cgi.exe
<?php phpinfo(); ?>

验证

访问 https://localhost/cgi-bin/test.cgi,看到 Server API: CGI/FastCGI,任务管理器出现短暂 php-cgi.exe 进程,请求结束即消失。

缺点

  • 每请求 fork-exec 新进程,开销巨大,高并发不可用。
  • 环境变量、配置重复加载。

方式三:FastCGI 模式 —— 生产环境标准、持久进程、高性能

准备

  1. 下载 mod_fcgid.so (Apache 2.2 对应版本),放入 modules/。
  2. PHP 使用 NTS (Non Thread Safe) 版本。

Apache 配置

LoadModule fcgid_module modules/mod_fcgid.so

# PHP 解释器路径与配置
FcgidInitialEnv PHPRC "C:/php5"
FcgidWrapper "C:/php5/php-cgi.exe" .php

# 处理 .php 文件
AddHandler fcgid-script .php

# 允许执行 CGI 脚本
<Directory "C:/php5">
    Options ExecCGI
    Require all granted
</Directory>

验证

访问 https://localhost/index.php,Server API: CGI/FastCGI。任务管理器常驻多个 php-cgi.exe 进程 (由 Fcgid 管理器池化),不随请求销毁。

优势

  • 持久进程池,避免重复初始化。
  • Apache 与 PHP 进程隔离,互不影响。
  • 支持平滑重启、进程数动态调整 (FcgidMaxProcesses 等)。

模式对比总结

维度模块模式CGI 模式FastCGI 模式
进程模型Apache 内部线程每请求新进程持久进程池
性能高极低高
隔离性无 (PHP 崩溃挂 Apache)完全完全
配置复杂度低中中
推荐场景开发调试、低并发不推荐生产环境标准
PHP 版本要求TS (Thread Safe)NTS/TS 均可NTS (Non Thread Safe)

现代部署建议

Windows 生产环境已极少见。推荐:

  1. Linux + Nginx + PHP-FPM (FastCGI 标准实现),性能、稳定性、生态最优。
  2. Docker 容器化:php:8.2-fpm + nginx:alpine,一致性部署。
  3. Windows 开发机:WSL2 + Docker 或 Laravel Valet / PHP 内置服务器。

结语

理解三种模式原理有助于排查历史遗留系统问题。新项目请直接拥抱 Linux + PHP-FPM + Nginx 架构,享受成熟生态与最佳性能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved