redirect stdout to stderr
| From: | Jack Bates | Date: | Sat, 23 Feb 2008 00:04:14 +0000 |
| Subject: | redirect stdout to stderr | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-269925@lists.php.net to get a copy of this message | ||
How can I implement in PHP, a script which redirects stdout to stderr,
such that echo, etc. print to stderr instead of stdout?
I can redirect stdout to stderr when invoking PHP like so:
php script-name >&2
However I want to perform this redirection within the script itself.
The solution I currently use is output buffering:
ob_start();
// Call library code
fwrite(STDERR, ob_get_contents());
ob_end_clean();
However I wonder if there's a more efficient way, so that output appears
on stderr immediately, rather than waiting for fwrite(STDERR,
ob_get_contents());
My reason for wanting this is to create a Subversion pre-commit hook
using PHP_CodeSniffer: http://pear.php.net/package/PHP_CodeSniffer
I want:
1) Commits to our Subversion repository to be checked against our coding
standard with PHP_CodeSniffer
2) Commits to fail when PHP_CodeSniffer returns an error
3) PHP_CodeSniffer's report to be displayed to the Subversion user, so
they can fix any problems
I achieved 1) and 2), but PHP_CodeSniffer prints its report to stdout
and Subversion only displays stderr to the user, not stdout. So to make
this pre-commit hook fool proof, I want it to redirect PHP_CodeSniffer's
report to stderr.
Anyone have better suggestions than output buffering?
Much thanks, Jack
Attachment: [application/pgp-signature] This is a digitally signed message part signature.asc
Attachment: [application/pgp-signature] This is a digitally signed message part signature.asc