This is a one line fix if you have missing string/array output from a custom WP-CLI command when using the WP Engine “SSH Gateway”.
The problem is the unorthodox way the gateway works suppresses ordinary output from certain commands – e.g.
echo. Symptom: you run a WP-CLI command of your own through the SSH gateway and lines of text you’re expecting are missing.
First, you should switch from
WP_CLI::line() (deprecated now anyway) to
WP_CLI::log() – the line() method doesn’t work because, if you dig into the source code, you’ll see it just echos the output, however log() uses the proper wp-cli Logger class.
That’s fine if you want to output strings. Unfortunately, it doesn’t work if you need to print an array.
This does though:
fwrite( STDOUT, print_r($foo, TRUE) );
To unpack that, we’re using print_r to neatly print the array. The second argument for print_r returns its value as a string. You need not fopen STDOUT first, as you would for another file handle.
And that’s it.
* Would I recommend WP Engine? No, given I have hosting knowledge myself, and when I asked for their assistance with this particular problem, their support agent told me it was out of scope and I should look at StackOverflow, for which they have earned this mildly passive aggressive paragraph in a blog post that will sink without trace. However, many people do like them, and if you’re a WordPress developer, you may well inherit a client with a site hosted there one day.