SAPI = Server Application Programming Interface
CGI = Common Gateway Interface
CLI SAPI 模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它
SAPI
模块相比有很多的不同之处,我们将在本章中详细阐述。值得一提的是,尽管 CLI
和 CGI
有很多共同的行为,但它们是不同的 SAPI。
CLI SAPI 模块会通过默认的 --enable-cli 参数设置启用, 也可以在运行 ./configure 时用参数 --disable-cli 来屏蔽。
CLI/CGI 二进制执行文件的文件名、位置和是否存在会根据
PHP 在系统上的安装而不同。在默认情况下,当运行
make 时,CGI 和 CLI 都会被编译并且分别放置在
PHP 源文件目录的 sapi/cgi/php-cgi 和
sapi/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 来使得 CLI 在 make install 过程中被拷贝到 {PREFIX}/bin/php。
在 Windows 发行包中,CLI 在主目录中的二进制文件名为 php.exe。CGI 版本的文件名为 php-cli.exe。 如果 PHP 配置使用了 --enable-cli-win32,还会有一个额外的 php-win.exe 随包发布。 它相当于 CLI 版本,但是 php-win 不输出任何内容,便不提供控制台(不会弹出"DOS 窗口")。
Note: 如何得知自己使用的是哪个 SAPI?
在命令行下,运行 php -v 便能得知该 php 是 CGI 还是 CLI。请参考函数 php_sapi_name() 以及常量
PHP_SAPI
。
Note:
在命令行中键入 man php 可以查看 Unix
man
手册页面。
SAPI = Server Application Programming Interface
CGI = Common Gateway Interface