php-cli 与 php-fpm 的区别以及如何选择

72次阅读
没有评论

问题描述

在查看 Docker 官方的 PHP 镜像页面时,发现了关于 php-cliphp-fpm 的信息。他已经了解了 PHP FPM(Fast CGI Process Manager)的概念,并知道 PHP 可以在命令行中运行,用于运行 PHP Composer 和 Symfony 命令行工具。然而,他想知道 Docker 中的 php-fpm 是否包含了与 php-cli 类似的 PHP 命令行工具,或者说 php-fpm 是否是 php-cli 的超集。用户还想了解在选择使用 php-cli 还是 php-fpm 时的考虑因素。

解决方案

请注意以下操作可能会涉及不同的版本和配置。确保在实施前做好备份,并根据具体情况进行调整。

php-cli 与 php-fpm 的区别

php-cliphp-fpm 是两种用于不同目的的工具:

  1. php-cli:这是独立的 PHP 命令行工具,用于以与在命令行中直接运行 PHP 脚本相同的方式运行它,例如:php somescript.php。此外,你还可以基于此镜像构建其他镜像。

    此变体包含带有默认模块的 PHP 命令行工具。如果你需要一个 web 服务器,那么这可能不是你要找的镜像。它旨在用作一次性容器(将你的源代码挂载并启动容器以启动应用程序),以及构建其他镜像的基础。

  2. php-fpm:这是 PHP 的 FastCGI 服务器实现,通常与 FastCGI 兼容的 web 服务器(如 Apache 或 Nginx)一起使用。

    此变体包含了 PHP-FPM,它是用于 PHP 的 FastCGI 实现。详细信息可参阅 PHP-FPM 网站

选择使用哪个工具

选择使用 php-cli 还是 php-fpm 取决于你的需求:

  • php-cli 适用于那些希望在命令行中直接运行 PHP 脚本的情况,例如运行 Composer 命令或 Symfony 控制台命令。它也可用于基于其他镜像的构建过程。

  • php-fpm 适用于需要将 PHP 与 FastCGI 兼容的 web 服务器(如 Apache 或 Nginx)一起使用的情况。它在 web 应用程序的部署中起到关键作用,能够处理 PHP 脚本的请求并返回结果。

其他变体

此外,还有两种其他的 PHP 镜像变体可供选择:

  • php-apache:这是预配置了 mod_php 的 Apache 服务器。适用于那些希望将 PHP 与 Apache 服务器一起使用的情况。

  • php-alpine:这是基于 Alpine Linux 构建的最小化 Docker 镜像,尽管存在一些兼容性问题,但可以用于特定情况。

你可以在 GitHub 上查看所有的 Dockerfiles,尽管 php-fpm 不是基于 php-cli,但它们在实际使用中很可能非常相似,php-fpm 可能是 php-cli 的超集。

请根据你的具体需求选择合适的工具,并根据情况进行配置。

注:请注意,以上内容仅供参考,具体的使用情况可能因版本和配置而有所不同。在进行操作前,请仔细阅读文档并做好备份。

正文完