CLI 程序开发 - 标准错误输出

  • 作者:KK

  • 发表日期:2016.10.14


普通内容的导向输出

CLI输出结果是有“正常”和“错误”输出两种区别的,首先比如脚本有echo 123;这样的代码,执行命令php test.php > output.txt就会发现终端上并没有输出任何内容,而是在当前目录产生了一个output.txt,打开文件就看到了123,这就是echo出来的东西

>这个符号在命令后面指定一个文件名,意思就是将命令程序运行的输出内容都导向到这个文件,而不是导向命令行终端(cmd就是这个终端程序)


错误内容导向输出

在命令行交互中还定义了标准错误输出这种概念,比如写下这样的代码:

echo '普通输出';

$errHandler = fopen('php://stderr', 'w');
fwrite($errHandler, '错误输出');
fclose($errHandler);

然后执行命令:php test.php > result.txt 2> err.txt

会发现生成了result.txt和err.txt,两个文件的内容分别是普通输出和错误输出

通常写CLI程序时如果要输出错误的内容,那就往php://stderr这个地址写入内容即可,在Linux下也是一样的


应用实例

我在SVN - 钩子开发文章中有演示到用PHP的CLI程序来做SVN钩子处理,涉及到stdoutstderr的输出操作






技术博客首页
如有疑问或寻求交流请点击 技术氛围浓厚的PHP技术群
或搜索QQ群号:530352489
加群暗号是"知道了"
本群技术氛围浓厚,拒绝吹水泛滥,经常吹水者请勿扰

关注公众号
可向你推送新文章
打赏点供房基金吧^-^