SSH2 returning "resource(2) of type (stream)" (PHP)

Josh Foskett picture Josh Foskett · May 17, 2012 · Viewed 12.8k times · Source

I'm attempting to run a SSH command from a remote server with PHP's ssh2 library using the ssh2_exec function.

Instead of getting what I want returned back to me from SSH, I get this:

resource(2) of type (stream)

Sometimes the 2 is a 3 if that matters.

Here is the code that I'm attempting to use:

<?php

$connection = ssh2_connect('ssh.example.com', 22);

ssh2_auth_password($connection, 'root', 'password');

if($output = ssh2_exec($connection, 'uptime')) {

    var_dump($output);

}

Working solution:

<?php

$connection = ssh2_connect('ssh.example.com', 22);

ssh2_auth_password($connection, 'root', 'password');

if($output = ssh2_exec($connection, 'uptime')) {

    stream_set_blocking($output, true);

    echo stream_get_contents($output);

}

Answer

Francis Avila picture Francis Avila · May 17, 2012

Read the documentation:

Return Values

Returns a stream on success or FALSE on failure.

A stream is a file-like object. You can get data from it with stream functions or file handle functions like fread.

E.g.

$string = stream_get_contents($stream);

$line = stream_get_line($stream);

$fivebytes = fread($stream, 5);