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的输出操作