php提供的sapi有哪些?CGI、FastCGI、php-fpm、php-cgi解释
一、前言 相信不少PHP开发者都曾对“sapi”这个概念感到好奇。上网一搜,满眼都是fpm、cgi、fastcgi、php-cgi这些术语,看得人眼花缭乱。 直到后来,笔者仔细研读了鸟哥那篇经典文章(戳这里),并查看了PHP源码中的sapi目录,才算是真正拨开了迷雾。 二、sapi是什么 要理解sa
一、前言
相信不少PHP开发者都曾对“sapi”这个概念感到好奇。上网一搜,满眼都是fpm、cgi、fastcgi、php-cgi这些术语,看得人眼花缭乱。

直到后来,笔者仔细研读了鸟哥那篇经典文章(戳这里),并查看了PHP源码中的sapi目录,才算是真正拨开了迷雾。
二、sapi是什么
要理解sapi,得先看看PHP的架构体系。简单来说,sapi是PHP提供的一套接口规范(当然,用“接口”这个词可能还不够精确,欢迎指正)。正是通过这套规范,外部的各种程序(比如Web服务器)才能顺利地调用并执行PHP脚本。
那么,PHP具体提供了哪些sapi呢?看下面这个列表就清楚了:
- apache2handler
- cgi
- cli
- embed
- fpm
- litespeed
- phpdbg
三、核心概念辨析
cgi
先说CGI。它的本质,是Web服务器与外部应用程序之间约定好的一套数据交换协议。而php-cgi,就是PHP实现这套协议的一个具体程序。不过,这种模式有个老生常谈的问题:每次收到请求,都需要启动一个新的php-cgi进程,开销不小。
fastcgi
正因为CGI每次“现用现起”的方式效率不高,FastCGI协议应运而生。它的核心改进,就是让CGI程序能够常驻内存,无需为每个请求都经历一次启动、加载配置、初始化的完整过程。这样一来,性能自然就上去了。
php-fpm
理解了FastCGI,php-fpm就很好懂了。它正是PHP对FastCGI协议的一种具体实现,也就是上面sapi列表里的那个“fpm”。在编译PHP时,我们常会看到 --enable-fpm 这个选项。
这里有个历史小知识:在PHP 5.3.3版本之前,php-fpm是以一个独立补丁包的形式存在的,主要目标就是将FastCGI进程管理功能整合进PHP。而从5.3.3版本开始,它已经被正式收录,并默认编译进PHP的核心包里了。
如果想对PHP-FPM的源码机制有更深入的了解,可以看这里(戳)。
php-cgi
最后说说php-cgi。结合上面的解释,它的身份就很明确了:它就是PHP为了实现标准CGI协议而编写的那个程序。当然,这个理解是基于当前普遍的认知,如果有更精确的解读,也欢迎探讨。
以上就是对PHP sapi及相关概念的梳理。如果大家有任何疑问或不同见解,欢迎留言一起讨论!
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













