1、PHP CLI基础:什么是CLI、PHP CLI与Web模式的区别、PHP CLI的安装与配置、第一个PHP CLI脚本
1.1 什么是CLI?
CLI,全称Command Line Interface,中文叫命令行界面。说白了,就是那个黑乎乎的终端窗口,你敲命令,它给你反馈。
我刚开始接触编程时,总觉得图形界面才是王道。后来才发现,真正的高手都在命令行里游刃有余。为什么?因为命令行效率高、可脚本化、资源占用少。你想想看,一个简单的文件批量处理,用鼠标点来点去可能要几分钟,用CLI命令一秒搞定。
PHP CLI,就是把PHP运行在命令行模式下。它不像Web模式那样需要Apache或Nginx,直接通过终端执行PHP脚本。我个人习惯把CLI脚本当作瑞士军刀——文件处理、数据迁移、定时任务、系统监控,什么都能干。
1.2 PHP CLI与Web模式的区别
很多新手会问:PHP不都是跑在网页上的吗?其实不是。PHP从诞生之初就支持CLI模式,只是Web模式太出名了,大家容易忽略这个能力。
我列个表格,你一看就明白:
| 对比项 | PHP CLI模式 | PHP Web模式 |
|---|---|---|
| 运行环境 | 终端/命令行 | Web服务器(Apache/Nginx) |
| 输出方式 | 直接输出到终端 | 输出HTTP响应 |
| 超时限制 | 默认无超时(可手动设置) | 通常有30秒超时限制 |
| 内存限制 | 默认无限制(可手动设置) | 通常有128M或256M限制 |
| 请求方式 | 单次执行,完成后退出 | 每次请求一个进程 |
| 适用场景 | 定时任务、脚本处理、系统管理 | 网页应用、API接口 |
这里有个关键区别:CLI模式下没有$_GET、$_POST这些超全局变量。为什么?因为没有HTTP请求啊。你想想看,在终端里敲命令,哪来的GET参数?
1.3 PHP CLI的安装与配置
安装PHP CLI其实很简单。大多数Linux发行版都自带PHP,但可能只装了Web模式。你需要单独安装CLI版本。
在Ubuntu/Debian上:
sudo apt update
sudo apt install php-cli
在CentOS/RHEL上:
sudo yum install php-cli
在macOS上(使用Homebrew):
brew install php
安装完成后,验证一下:
php -v
你会看到类似这样的输出:
PHP 8.2.12 (cli) (built: Oct 26 2023 17:50:25) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies
注意看第一行末尾的 (cli),这表示你运行的是CLI模式。
export PATH=$PATH:/usr/bin/php
然后执行 source ~/.bashrc 生效。
还有一些常用的CLI配置项,我建议你了解一下:
- php.ini路径:CLI模式使用独立的php.ini文件,通常位于 /etc/php/8.2/cli/php.ini
- memory_limit:CLI模式下默认-1(无限制),但你可以手动设置
- max_execution_time:CLI模式下默认0(无限制)
- display_errors:建议开启,方便调试
php --ini 命令查看当前CLI模式加载的配置文件路径。我每次换环境第一件事就是跑这个命令,确认配置对不对。
1.4 第一个PHP CLI脚本
好了,理论说完了,咱们动手写一个。第一个脚本,来个经典的"Hello World"吧。
创建一个文件,比如 hello.php:
<?php
echo "Hello, PHP CLI World!\n";
echo "当前时间:" . date('Y-m-d H:i:s') . "\n";
echo "PHP版本:" . PHP_VERSION . "\n";
然后在终端里执行:
php hello.php
你会看到:
Hello, PHP CLI World!
当前时间:2024-01-15 14:30:25
PHP版本:8.2.12
是不是很简单?但这里有几个细节要注意:
- 不需要<?php结束标签:CLI脚本中,我建议省略?>,避免意外输出空白字符
- 换行用\n:Web模式下用<br>,CLI模式下用\n
- 直接输出到终端:echo、print、var_dump都会直接显示在终端上
再来看一个实用点的例子——接收命令行参数:
<?php
if ($argc < 2) {
echo "用法:php greet.php <名字>\n";
exit(1);
}
$name = $argv[1];
echo "你好,{$name}!欢迎来到PHP CLI世界。\n";
执行:
php greet.php 张三
输出:
你好,张三!欢迎来到PHP CLI世界。
这里用到了两个内置变量:
- $argc:参数个数(包括脚本名本身)
- $argv:参数数组,$argv[0]是脚本名,$argv[1]开始是传入的参数
嗯,到这里你已经掌握了PHP CLI的基础。说白了,就是把PHP当作一个脚本语言来用,跟Python、Shell没什么两样。但它的优势在于——你本来就熟悉PHP语法,不用再学一门新语言。
我记得第一次用PHP写CLI脚本时,感觉特别爽。不用考虑浏览器兼容性,不用处理HTTP请求,就是纯粹的代码逻辑。那种掌控感,是Web开发给不了的。
下一章,我们会深入讲解CLI脚本的参数解析和交互式输入。到时候你会看到,PHP CLI能做的事情远比想象中多。