PHP пишет много текста в STDERR
При написании большого фрагмента в STDOUT
в PHP вы можете сделать это:
echo <<<END_OF_STUFF
lots and lots of text
over multiple lines
etc.etc
END_OF_STUFF;
(т.е. heredoc)
Мне нужно сделать что-то подобное, но < <22 > . Есть ли другая команда, например echo
, но вместо нее использует STDERR
?
Ответы
Ответ 1
Да, используя 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);
Ответ 2
Для простого решения - попробуйте это
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
Ответ 3
В CLI SAPI это может быть так же просто, как передать строку Heredoc в качестве аргумента fwrite()
с константой STDERR.
fwrite(STDERR, <<< EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD
);