1. PHP不仅可以运行在网页中,还可以通过命令行模式运行,名为CLI(Command Line Interface),在cli模式下会覆盖php.ini的一些设置,覆盖的php.ini设置如下:
2. STDIN、STDOUT
在cli模式下,输入和输出可以使用STDIN和STDOUT,类似于C的scanf,比如:
<?php
//提示用户输入姓名
fwrite(STDOUT, "what's your name" . PHP_EOL);
//获取用户输入数据
$name = trim(fgets(STDIN));
//在客户端输出
fwrite(STDOUT, "Hello, $name" . PHP_EOL);
在命令行中执行 php xxx.php,就会提示你输入姓名,输入后会输出:
λ php test11.php
what's your name
paul
Hello, paul
但是如果在web中运行该php,就会报错:
3. 判断是在命令行还是在web
可以在代码中判断该php是运行在哪种方式:
<?php
echo PHP_SAPI . PHP_EOL;
echo php_sapi_name() . PHP_EOL;
如果是在命令下运行,则输出:
λ php test11.php
cli
cli
如果是在web下运行,则输出:
cgi-fcgi cgi-fcgi
4. 命令模式下接收参数
在命令模式下可以通过$argv来读取所有的输入参数,用$argc来读取输入参数的个数,比如代码如下:
<?php
echo '参数的个数为:' . $argc . PHP_EOL;
print_r($argv);
在命令模式下输入:
php test11.php argv1 argv2 argv3
输出:
λ php test11.php argv1 argv2 argv3
参数的个数为: 4
Array
(
[0] => test11.php
[1] => argv1
[2] => argv2
[3] => argv3
)
注意:第一个参数是该php脚本
注意:$argv和$argc,在cli模式下可以正常使用,而在web模式下的话则会报错: