13

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

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

(即heredoc

我需要做类似的事情,但要STDERR. 是否有另一个类似echo但使用的命令STDERR

4

3 回答 3

21

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

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

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

更多信息可以在 - http://php.net/manual/en/features.commandline.io-streams.php找到

于 2012-08-20T14:33:37.803 回答
21

是的,使用 php:// 流包装器:​​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);
于 2012-08-20T14:34:17.707 回答
2

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

fwrite(STDERR, <<< EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD
);
于 2017-04-05T05:40:47.387 回答