#author("2025-09-06T11:11:32+09:00","default:pengwei-admin","pengwei-admin")
#author("2025-09-06T17:43:46+09:00","default:pengwei-admin","pengwei-admin")
[[php/FPM/CLI]]
#contents
*PHP-FPM 和 PHP CLI 是 PHP 的两种运行模式,它们各自适用于不同的场景。 [#e4c394c5]

---

## 🚀 什么是 PHP-FPM(FastCGI Process Manager)

PHP-FPM 是 PHP 的一种运行方式,它实现了 FastCGI 协议,并提供了进程管理功能。它的主要作用是:

- **处理 Web 请求**:当用户访问网站时,Web 服务器(如 Nginx 或 Apache)会将 `.php` 请求交给 PHP-FPM 来处理。
- **高性能并发处理**:PHP-FPM 会预先启动多个 PHP 工作进程,避免每次请求都重新启动 PHP,提升性能。
- **资源管理**:可以配置最大进程数、空闲进程数、请求超时等参数,灵活控制服务器资源。
- **与 Web 服务器解耦**:PHP-FPM 作为独立服务运行,Web 服务器通过 FastCGI 协议与它通信。

📍适用于:**Web 应用场景**,如网站、API 服务等。

---

## 🧑‍💻 什么是 PHP CLI(Command Line Interface)

PHP CLI 是 PHP 的命令行接口,允许你在终端中直接运行 PHP 脚本。它的特点是:

- **无需 Web 服务器**:直接在命令行运行 `.php` 文件。
- **适合脚本任务**:如定时任务(crontab)、数据处理、自动化脚本等。
- **长时间运行不受限制**:不像 Web 请求有超时限制,CLI 脚本可以运行很久。
- **调试方便**:开发者可以快速测试 PHP 代码。

📍适用于:**后台任务、脚本执行、开发调试**。
--apt install php = php_CLI

---

## 🔍 对比总结

| 特性 | PHP-FPM | PHP CLI |
|------|---------|---------|
| 启动方式 | 由 Web 服务器通过 FastCGI 调用 | 直接在命令行运行 |
| 使用场景 | 网站请求处理 | 后台任务、定时脚本 |
| 性能 | 高并发优化,进程池管理 | 单进程执行 |
| 是否需要 Web 服务器 | 是 | 否 |
| 是否支持 HTTP 请求 | 是(通过 Web 服务器) | 否 |

---

## 🎯 举个例子

- 如果你在做一个网站,用户访问 `index.php`,你需要用 PHP-FPM。
- 如果你写了一个脚本 `backup.php`,每天凌晨自动备份数据库,那就用 PHP CLI。
---

*PHP-FPM 和 PHP CLI 各自使用不同的 `php.ini` 文件路径**,它们是分开的配置`php.ini` 是 PHP 的主配置文件 [#cfef8811]

---

## 🧩 两者使用的 `php.ini` 路径不同

| 模式 | 使用的配置文件路径 | 查看方式 |
|------|---------------------|-----------|
| **PHP CLI** | `/etc/php/8.1/cli/php.ini` | 运行 `php --ini` |
| **PHP-FPM** | `/etc/php/8.1/fpm/php.ini` | 查看 `phpinfo()` 页面或运行 `php-fpm -i` |

---

## 🔍 为什么要分开?

因为 CLI 和 FPM 的运行环境不同,需求也不同:

- **CLI**:适合长时间运行的脚本,比如备份、数据处理。可以设置较长的 `max_execution_time`。
- **FPM**:用于 Web 请求处理,通常需要更短的超时时间、更严格的资源限制。

---

## 🛠️ 如何确认当前使用的是哪个配置文件?

- **PHP CLI**:
  ```bash
  php --ini
  ```
  输出中会显示:
  ```
  Loaded Configuration File: /etc/php/8.1/cli/php.ini
  ```
- **PHP-FPM**:
  在网页中运行:
  ```php
  <?php phpinfo(); ?>
  ```
  页面中会显示:
  ```
  Loaded Configuration File => /etc/php/8.1/fpm/php.ini
  ```
---

## ✅ 总结

- `php.ini` 是核心配置文件,但 CLI 和 FPM 各自有独立的版本。
- 修改 CLI 的配置不会影响 FPM,反之亦然。
- 要根据你的运行环境修改对应的 `php.ini`。
- CLI の PHP(apt install php)は /etc/php/8.1/cli/php.ini を使いますが、
 OpenLiteSpeed の PHP は /usr/local/lsws/lsphp81/etc/php/8.1/litespeed/php.ini を使います。

可以这么理解:**lsphp 是一种类似 PHP-FPM 的运行方式,但它不是 PHP-FPM 本身,而是专门为 LiteSpeed 和 OpenLiteSpeed Web 服务器优化的 PHP 处理器**。

---

## 🔍 什么是 lsphp?

`lsphp` 是 **LiteSpeed PHP** 的简称,它是 PHP 的一种 SAPI(Server API)实现,使用的是 **LSAPI(LiteSpeed API)协议**,而不是传统的 FastCGI 协议。

它的作用和 PHP-FPM 类似:  
- 都是用来处理 Web 请求中的 PHP 脚本  
- 都是以独立进程运行  
- 都可以通过 socket 或端口与 Web 服务器通信

但区别在于:

| 特性 | lsphp | PHP-FPM |
|------|-------|---------|
| 协议 | LSAPI(LiteSpeed 专用) | FastCGI |
| 适用服务器 | LiteSpeed / OpenLiteSpeed | Nginx / Apache(mod_proxy_fcgi)等 |
| 性能 | 更快的启动和通信效率(针对 LiteSpeed 优化) | 通用但略慢 |
| 配置方式 | 通常通过 LiteSpeed 面板或配置文件 | 通过 `php-fpm.conf` 和 `php.ini` |

---

## ✅ lsphp 是 PHP-FPM 的“替代品”

你可以把它看作是:
> “LiteSpeed 专属的 PHP-FPM”。

它实现了类似的功能,但用的是 LiteSpeed 自家的协议和优化方式。  
如果你用的是 LiteSpeed 或 OpenLiteSpeed,**推荐使用 lsphp 而不是 PHP-FPM**,因为性能更好、兼容性更强。

---

## 🧠 补充小知识

- 在 cPanel 或 Plesk 面板中,很多服务器默认使用 `lsphp` 来处理 PHP。
- lsphp 进程在系统中也会显示为 `lsphp`,而不是 `php-fpm`。
- 它也有自己的配置文件路径,比如 `/usr/local/lsws/lsphpXX/etc/php.ini`。

---

如果你正在配置 Web 环境,我可以帮你判断是否该用 lsphp、php-fpm,或者其他方式(比如 mod_php)。你现在是用哪种 Web 服务器呢?Nginx、Apache 还是 LiteSpeed?

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS