在PHP中将大块写入STDOUT
时,您可以这样做:
echo <<<END_OF_STUFF
lots and lots of text
over multiple lines
etc.etc
END_OF_STUFF;
(即 heredoc )
我需要对STDERR
做类似的事情。是否有其他命令,例如echo
,但使用STDERR
代替?
答案 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
参数将附加数据而不会覆盖它。
您还可以使用fopen
和fwrite
函数直接写入错误流。
可在 - 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
);