php stderr,Exec()后的PHP StdErr「建议收藏」

php stderr,Exec()后的PHP StdErr「建议收藏」如果你想要执行一个命令,同时得到stderr和stdout,而不是“合并”,一个解决scheme可能会使用proc_open,它提供了一个很好的控制正在执行的命令–包括一种方式pipe道stdin/stdout/stderr。下面是一个例子:让我们考虑一下在test.sh有这个shell脚本,它写入stderr和stdout:#!/bin/bashecho’thisis…

大家好,欢迎来到IT知识分享网。

如果你想要执行一个命令,同时得到stderr和stdout ,而不是“合并”,一个解决scheme可能会使用proc_open ,它提供了一个很好的控制正在执行的命令 – 包括一种方式pipe道stdin / stdout / stderr 。

下面是一个例子:让我们考虑一下在test.sh有这个shell脚本,它写入stderr和stdout :

#!/bin/bash echo ‘this is on stdout’; echo ‘this is on stdout too’; echo ‘this is on stderr’ >&2; echo ‘this is on stderr too’ >&2;

现在,让我们在temp.php编写一些PHP – 首先,我们初始化I / O描述符:

$descriptorspec = array( 0 => array(“pipe”, “r”), // stdin 1 => array(“pipe”, “w”), // stdout 2 => array(“pipe”, “w”), // stderr );

然后,使用这些描述符在当前目录中执行test.sh命令,并说I / O应该从/到$pipes :

$process = proc_open(‘./test.sh’, $descriptorspec, $pipes, dirname(__FILE__), null);

我们现在可以从两个输出pipe道读取:

$stdout = stream_get_contents($pipes[1]); fclose($pipes[1]); $stderr = stream_get_contents($pipes[2]); fclose($pipes[2]);

而且,如果我们输出这两个variables的内容:

echo “stdout : \n”; var_dump($stdout); echo “stderr :\n”; var_dump($stderr);

执行temp.php脚本时,我们得到以下输出:

$ php ./temp.php stdout : string(40) “this is on stdout this is on stdout too ” stderr : string(40) “this is on stderr this is on stderr too “

希望这可以帮助 :-)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25535.html

(0)
上一篇 2023-07-20 22:33
下一篇 2023-07-22 12:33

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信