PHP将大量文本写入STDERR

时间:2012-08-20 14:30:08

标签: php echo stdout stderr

在PHP中将大块写入STDOUT时,您可以这样做:

echo <<<END_OF_STUFF
lots and lots of text
over multiple lines
etc.etc
END_OF_STUFF;

(即 heredoc

我需要对STDERR做类似的事情。是否有其他命令,例如echo,但使用STDERR代替?

3 个答案:

答案 0 :(得分:20)

是的,使用php:// stream wrapper:http://php.net/manual/en/wrappers.php.php

$stuff = <<<END_OF_STUFF
lots and lots of text
over multiple lines
etc.etc
END_OF_STUFF;

$fh = fopen('php://stderr','a'); //both (a)ppending, and (w)riting will work
fwrite($fh,$stuff);
fclose($fh);

答案 1 :(得分:18)

对于一个简单的解决方案 - 试试这个

file_put_contents('php://stderr', 'This text goes to STDERR',FILE_APPEND);

FILE_APPEND参数将附加数据而不会覆盖它。 您还可以使用fopenfwrite函数直接写入错误流。

可在 - http://php.net/manual/en/features.commandline.io-streams.php

找到更多信息

答案 2 :(得分:2)

CLI SAPI中,它可以像使用STDERR常量将Heredoc字符串作为参数传递给fwrite()一样简单。

fwrite(STDERR, <<< EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD
);