CLI SAPI 模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它 SAPI 模块相比有很多的不同之处,我们将在本章中详细阐述。值得一提的是,尽管 CLICGI 有很多共同的行为,但它们是不同的 SAPI

CLI SAPI 模块会通过默认的 --enable-cli 参数设置启用, 也可以在运行 ./configure 时用参数 --disable-cli 来屏蔽。

CLI/CGI 二进制执行文件的文件名、位置和是否存在会根据 PHP 在系统上的安装而不同。在默认情况下,当运行 make 时,CGI 和 CLI 都会被编译并且分别放置在 PHP 源文件目录的 sapi/cgi/php-cgisapi/cli/php 下。可以注意到两个文件都被命名为了 php。在 make install 的过程中会发生什么取决于配置行。如果在配置的时候选择了一个 SAPI 模块,如 apxs,或者使用了 --disable-cgi 参数,则在 make install 的过程中,CLI 将被拷贝到 {PREFIX}/bin/php,除非 CGI 已经被放置在了那个位置。因此,例如,如果在配置行中有 --with--apxs,则在 make install 的过程中,CLI 将被拷贝到 {PREFIX}/bin/php。如果希望覆盖 CGI 执行文件的安装,请在 make install 之后运行 make install-cli。或者,也可以在配置行中加上 --disable-cgi 参数。

Note:

由于 --enable-cli--enable-cgi 同时默认有效,因此,不必再配置行中加上 --enable-cli 来使得 CLImake install 过程中被拷贝到 {PREFIX}/bin/php

在 Windows 发行包中,CLI 在主目录中的二进制文件名为 php.exeCGI 版本的文件名为 php-cli.exe。 如果 PHP 配置使用了 --enable-cli-win32,还会有一个额外的 php-win.exe 随包发布。 它相当于 CLI 版本,但是 php-win 不输出任何内容,便不提供控制台(不会弹出"DOS 窗口")。

Note: 如何得知自己使用的是哪个 SAPI?

在命令行下,运行 php -v 便能得知该 phpCGI 还是 CLI。请参考函数 php_sapi_name() 以及常量 PHP_SAPI

Note:

在命令行中键入 man php 可以查看 Unix man 手册页面。

User Contributed Notes

Anonymous 16-Jan-2021 09:54
SAPI = Server Application Programming Interface
CGI = Common Gateway Interface