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钩子处理,涉及到stdout
和stderr
的输出操作