Reputation: 2259
I have a script that makes a SSH connection to a server (this works fine). Now I want to execute a command and echo the result I get from this command.
So I do this:
$stream = ssh2_exec($conn, 'php -v');
but I can't get it to show the response, var_dump
returns resource(3) of type (stream)
.
I have tried to use:
$stream = ssh2_exec($conn, 'php -v');
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
but the $stream_out
returns an empty string.
So is it possible to print the response as result of the script?
Upvotes: 16
Views: 33879
Reputation: 1
The following code should get the error message written to stderr, but if the call to stream_get_contents() for stdout is run first, the subsequent call for stderr won't return anything.
If the order of the statements is reversed, the call for stderr will return any errors and call for stdout will return nothing
https://www.php.net/manual/en/function.ssh2-exec.php#99089
Upvotes: 0
Reputation: 2259
Ok i found the solution, so i post it for future reference
So to output the result of a command executed by ssh2_exec you should use following code setup
$stream = ssh2_exec($conn, 'php -v');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
Upvotes: 51
Reputation: 2972
add:
echo stream_get_contents($stream);
the result is the STREAM and you have to fetch it's contents first...
stream-fetch is only for fetching alternate sub-streams... (afaik)
Upvotes: 2