# PHP 的命令行模式

## 目录

- 和其它 SAPI 模块的区别
- 选项
- 用法
- I/O 流
- 交互式 shell
- 内置 Web Server
- INI 配置

## 简介

CLI SAPI 主要是使用 PHP 开发 shell 应用。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 参数。

> 注意:

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

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

> 注意: 如何得知自己使用的是哪个 SAPI？

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

> 注意:

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open