Printing to terminal while using output buffering in CLI PHP scripts
command-line, php
Solution
Just write to STDOUT or STDERR (both constants containing file pointer resources) using fputs():
ob_start();
echo 'Output buffer';
fputs(STDOUT, "Log message");
$x = ob_get_contents();
ob_end_clean();;
echo "X = $x";
Problem
I'm using command line PHP to build some files offline. To capture the script output I use the standard ob_start stuff: ``` ob_start(); // Echo lots of stuff $content = ob_get_contents(); // Now the $content can be written to a file ``` However, I also want to print some messages to the terminal (for instance, warnings) while collecting the "main output" into the buffer. Is there a way to do this? It doesn't seem to be possible to pause the buffering for a while to print the terminal messages, and then continue the buffering from where it was left. Is there any workaround for this?