一、简介
1 cli及为php的命令行接口
命令行接口默认开启,可以在运行./configure编译的时候用参数–disable-cli进行屏蔽
CLI SAPI 不会将当前目录改为已运行的脚本所在的目录
二、命令行模式运行
1 在命令行直接运行 PHP 代码
[root@yunfei ~]# php -r 'echo "1111\n";'
1111
1111
2 让 PHP 运行指定文件
[root@yunfei ~]# vim a.php
<?php
echo "aaa\n";
//end
echo "aaa\n";
//end
[root@yunfei ~]# php a.php
aaa
aaa
3 通过标准输入(stdin)提供需要运行的 PHP 代码
[root@yunfei ~]# cat a.php | php
aaa
aaa
运行结果与上面一致
4 把脚本当可执行文件执行
[root@yunfei ~]# vim b.php
#!/usr/local/php/bin/php
<?php
echo "bbb\n";
//end
<?php
echo "bbb\n";
//end
保存文件,然后执行
[root@yunfei ~]# chmod +x b.php
[root@yunfei ~]# ./b.php
bbb
[root@yunfei ~]# ./b.php
bbb
三、输入与输出
1 流的输入输出
[root@yunfei ~]# vim c.php
<?php
$content = file_get_contents("php://stdin");//读取输入流
echo $content;//直接输出
fwrite(STDOUT, "stdout\n");//从输出流输出
fwrite(STDERR, "stderr\n");//从错误输出流输出
//end
$content = file_get_contents("php://stdin");//读取输入流
echo $content;//直接输出
fwrite(STDOUT, "stdout\n");//从输出流输出
fwrite(STDERR, "stderr\n");//从错误输出流输出
//end
[root@yunfei ~]# php c.php < a.php
<?php
echo "aaa\n";
//end
stdout
stderr
<?php
echo "aaa\n";
//end
stdout
stderr
2 参数的接收
[root@yunfei ~]# vim d.php
<?php
//脚本的文件名总是作为参数传递给当前脚本,因此$argc最少为1,$argv数组第0个元素永远都是脚本名
echo $argc,"\n";//参数的数量
print_r($argv);//接受到的参数数组
//end
//脚本的文件名总是作为参数传递给当前脚本,因此$argc最少为1,$argv数组第0个元素永远都是脚本名
echo $argc,"\n";//参数的数量
print_r($argv);//接受到的参数数组
//end
[root@yunfei ~]# php d.php a b c
4
Array
(
[0] => d.php
[1] => a
[2] => b
[3] => c
)
4
Array
(
[0] => d.php
[1] => a
[2] => b
[3] => c
)
包含d.php a b c一共四个,参数之间按空格分开
3 从命令行参数列表中获取选项
[root@yunfei ~]# vim e.php
<?php
$shortopts = "";
$shortopts .= "f:";//必须项
$shortopts .= "v::";//可选项
$shortopts .= "abc";//不接受任何值
$longopts = array(
"required:",//必须项
"optional::",//可选项
"option",//不接受值
"opt"//不接受值
);
$options = getopt($shortopts, $longopts);//函数使详情请参见php文档
print_r($options);
//end
$shortopts = "";
$shortopts .= "f:";//必须项
$shortopts .= "v::";//可选项
$shortopts .= "abc";//不接受任何值
$longopts = array(
"required:",//必须项
"optional::",//可选项
"option",//不接受值
"opt"//不接受值
);
$options = getopt($shortopts, $longopts);//函数使详情请参见php文档
print_r($options);
//end
[root@yunfei ~]# php e.php -f "value of f" -v -a --required value --optional="optional value" --option
Array
(
[f] => value of f
[v] =>
[a] =>
[required] => value
[optional] => optional value
[option] =>
)
Array
(
[f] => value of f
[v] =>
[a] =>
[required] => value
[optional] => optional value
[option] =>
)
这就是我们设置的各个选项
转载请注明:小Y » php CLI模式简介