phpseclib API Documentation
Class

phpseclib\Net\SFTP

class SFTP extends SSH2

Pure-PHP implementations of SFTP.

Constants

MASK_CONSTRUCTOR

MASK_CONNECTED

MASK_LOGIN_REQ

MASK_LOGIN

MASK_SHELL

MASK_WINDOW_ADJUST

CHANNEL_EXEC

CHANNEL_SHELL

CHANNEL_SUBSYSTEM

CHANNEL_AGENT_FORWARD

LOG_SIMPLE

Returns the message numbers

LOG_COMPLEX

Returns the message content

LOG_REALTIME

Outputs the content real-time

LOG_REALTIME_FILE

Dumps the content real-time to a file

READ_SIMPLE

Returns when a string matching $expect exactly is found

READ_REGEX

Returns when a string matching the regular expression $expect is found

LOG_MAX_SIZE

Make sure that the log never gets larger than this

CHANNEL

SFTP channel constant

\phpseclib\Net\SSH2::exec() uses 0 and \phpseclib\Net\SSH2::read() / \phpseclib\Net\SSH2::write() use 1.

SOURCE_LOCAL_FILE

Reads data from a local file.

SOURCE_STRING

SOURCE_CALLBACK

Reads data from callback: function callback($length) returns string to proceed, null for EOF

RESUME

Resumes an upload

RESUME_START

Append a local file to an already existing remote file

Properties

string $identifier The SSH identifier
object $fsock The Socket Object
int $bitmap Execution Bitmap
string $errors Error information
array|false $server_identifier Server Identifier
array|false $kex_algorithms Key Exchange Algorithms
int $kex_dh_group_size_min Minimum Diffie-Hellman Group Bit Size in RFC 4419 Key Exchange Methods
int $kex_dh_group_size_preferred Preferred Diffie-Hellman Group Bit Size in RFC 4419 Key Exchange Methods
int $kex_dh_group_size_max Maximum Diffie-Hellman Group Bit Size in RFC 4419 Key Exchange Methods
array|false $server_host_key_algorithms Server Host Key Algorithms
array|false $encryption_algorithms_client_to_server Encryption Algorithms: Client to Server
array|false $encryption_algorithms_server_to_client Encryption Algorithms: Server to Client
array|false $mac_algorithms_client_to_server MAC Algorithms: Client to Server
array|false $mac_algorithms_server_to_client MAC Algorithms: Server to Client
array|false $compression_algorithms_client_to_server Compression Algorithms: Client to Server
array|false $compression_algorithms_server_to_client Compression Algorithms: Server to Client
array|false $languages_server_to_client Languages: Server to Client
array|false $languages_client_to_server Languages: Client to Server
int $encrypt_block_size Block Size for Server to Client Encryption
int $decrypt_block_size Block Size for Client to Server Encryption
object $decrypt Server to Client Encryption Object
object $encrypt Client to Server Encryption Object
object $hmac_create Client to Server HMAC Object
object $hmac_check Server to Client HMAC Object
int $hmac_size Size of server to client HMAC
string $server_public_host_key Server Public Host Key
string $session_id Session identifer
string $exchange_hash Exchange hash
array $message_numbers Message Numbers
array $disconnect_reasons Disconnection Message 'reason codes' defined in RFC4253
array $channel_open_failure_reasons SSHMSGCHANNELOPENFAILURE 'reason codes', defined in RFC4254
array $terminal_modes Terminal Modes
array $channel_extended_data_type_codes SSHMSGCHANNELEXTENDEDDATA's datatypecodes
int $send_seq_no Send Sequence Number
int $get_seq_no Get Sequence Number
array $server_channels Server Channels
array $channel_buffers Channel Buffers
array $channel_status Channel Status
array $packet_size_client_to_server Packet Size
array $message_number_log Message Number Log
array $message_log Message Log
int $window_size The Window Size
array $window_size_server_to_client Window size, server to client
array $window_size_client_to_server Window size, client to server
string $signature Server signature
string $signature_format Server signature format
array $interactiveBuffer Interactive Buffer
int $log_size Current log size
$timeout Timeout
$curTimeout Current Timeout
resource $realtime_log_file Real-time log file pointer
int $realtime_log_size Real-time log file size
bool $signature_validated Has the signature been validated?
$realtime_log_wrap Real-time log file wrap boolean
$quiet_mode Flag to suppress stderr from output
int $last_packet Time of first network activity
int $exit_status Exit status returned from ssh if any
bool $request_pty Flag to request a PTY when using exec()
bool $in_request_pty_exec Flag set while exec() is running when using enablePTY()
bool $in_subsystem Flag set after startSubsystem() is called
string $stdErrorLog Contents of stdError
string $last_interactive_response The Last Interactive Response
array $keyboard_requests_responses Keyboard Interactive Request / Responses
string $banner_message Banner Message
bool $is_timeout Did read() timeout or return normally?
string $log_boundary Log Boundary
int $log_long_width Log Long Width
int $log_short_width Log Short Width
string $host Hostname
int $port Port Number
int $windowColumns Number of columns for terminal window size
int $windowRows Number of columns for terminal window size
int $crypto_engine Crypto Engine
System_SSH_Agent $agent A SystemSSHAgent for use in the SSH2 Agent Forwarding scenario
array $packet_types Packet Types
array $status_codes Status Codes
int $request_id The Request ID
int $packet_type The Packet Type
string $packet_buffer Packet Buffer
array $extensions Extensions supported by the server
int $version Server SFTP version
string $pwd Current working directory
array $packet_type_log Packet Type Log
array $packet_log Packet Log
string $sftp_errors Error information
array $stat_cache Stat Cache
array $max_sftp_packet Max SFTP Packet Size
bool $use_stat_cache Stat Cache Flag
array $sortOptions Sort Options

Methods

SFTP __construct(string $host, int $port = 22, int $timeout = 10)

Default Constructor.

setCryptoEngine(int $engine)

Set Crypto Engine Mode

from SSH2
bool _connect()

Connect to an SSHv2 server

from SSH2
string _generate_identifier()

Generates the SSH identifier

from SSH2
_key_exchange(string $kexinit_payload_server)

Key Exchange

from SSH2
int|null _encryption_algorithm_to_key_size(string $algorithm)

Maps an encryption algorithm name to the number of key bytes.

from SSH2
mixed _encryption_algorithm_to_crypt_instance(string $algorithm)

Maps an encryption algorithm name to an instance of a subclass of \phpseclib\Crypt\Base.

from SSH2
bool login($username)

Login

bool _login($username)

Login Helper

from SSH2
bool _login_helper(string $username, string $password = null)

Login Helper

from SSH2
bool _keyboard_interactive_login(string $username, string $password)

Login via keyboard-interactive authentication

from SSH2
bool _keyboard_interactive_process()

Handle the keyboard-interactive requests / responses.

from SSH2
bool _ssh_agent_login(string $username, Agent $agent)

Login with an ssh-agent provided key

from SSH2
bool _privatekey_login($username, $privatekey)

Login with an RSA private key

from SSH2
setTimeout(mixed $timeout)

Set Timeout

from SSH2
getStdError()

Get the output from stdError

from SSH2
string exec(string $command, Callback $callback = null)

Execute Command

from SSH2
bool _initShell()

Creates an interactive shell

from SSH2
int _get_interactive_channel()

Return the channel to be used with read() / write()

from SSH2
int _get_open_channel()

Return an available open channel

from SSH2
string read(string $expect = '', int $mode = self::READ_SIMPLE)

Returns the output of an interactive shell

from SSH2
bool write(string $cmd)

Inputs a command into an interactive shell.

from SSH2
bool startSubsystem(string $subsystem)

Start a subsystem.

from SSH2
bool stopSubsystem()

Stops a subsystem.

from SSH2
reset()

Closes a channel

from SSH2
isTimeout()

Is timeout?

from SSH2
disconnect()

Disconnect

from SSH2
__destruct()

Destructor.

from SSH2
bool isConnected()

Is the connection still active?

from SSH2
bool isAuthenticated()

Have you successfully been logged in?

from SSH2
string _get_binary_packet()

Gets Binary Packets

from SSH2
string _filter($payload)

Filter Binary Packets

from SSH2
enableQuietMode()

Enable Quiet Mode

from SSH2
disableQuietMode()

Disable Quiet Mode

from SSH2
bool isQuietModeEnabled()

Returns whether Quiet Mode is enabled or not

from SSH2
enablePTY()

Enable request-pty when using exec()

from SSH2
disablePTY()

Disable request-pty when using exec()

from SSH2
bool isPTYEnabled()

Returns whether request-pty is enabled or not

from SSH2
mixed _get_channel_packet($client_channel, $skip_extended = false)

Gets channel data

from SSH2
bool _send_binary_packet(string $data, string $logged = null)

Sends Binary Packets

from SSH2
_append_log($message_number, $message)

Logs data packets

from SSH2
bool _send_channel_packet(int $client_channel, string $data)

Sends channel data

from SSH2
bool _close_channel(int $client_channel, bool $want_reply = false)

Closes and flushes a channel

from SSH2
bool _disconnect(int $reason)

Disconnect

string _string_shift(string $string, int $index = 1)

String Shift

from SSH2
_define_array()

Define Array

from SSH2
array|false|string getLog()

Returns a log of the packets that have been sent and received.

from SSH2
string _format_log(array $message_log, array $message_number_log)

Formats a log for printing

from SSH2
string _format_log_helper(array $matches)

Helper function for formatlog

from SSH2
_on_channel_open()

Helper function for agent->onchannel_open()

from SSH2
mixed _array_intersect_first(array $array1, array $array2)

Returns the first value of the intersection of two arrays or false if the intersection is empty.

from SSH2
string getErrors()

Returns all errors

from SSH2
string getLastError()

Returns the last error

from SSH2
string getServerIdentification()

Return the server identification.

from SSH2
array getKexAlgorithms()

Return a list of the key exchange algorithms the server supports.

from SSH2
array getServerHostKeyAlgorithms()

Return a list of the host key (public key) algorithms the server supports.

from SSH2
array getEncryptionAlgorithmsClient2Server()

Return a list of the (symmetric key) encryption algorithms the server supports, when receiving stuff from the client.

from SSH2
array getEncryptionAlgorithmsServer2Client()

Return a list of the (symmetric key) encryption algorithms the server supports, when sending stuff to the client.

from SSH2
array getMACAlgorithmsClient2Server()

Return a list of the MAC algorithms the server supports, when receiving stuff from the client.

from SSH2
array getMACAlgorithmsServer2Client()

Return a list of the MAC algorithms the server supports, when sending stuff to the client.

from SSH2
array getCompressionAlgorithmsClient2Server()

Return a list of the compression algorithms the server supports, when receiving stuff from the client.

from SSH2
array getCompressionAlgorithmsServer2Client()

Return a list of the compression algorithms the server supports, when sending stuff to the client.

from SSH2
array getLanguagesServer2Client()

Return a list of the languages the server supports, when sending stuff to the client.

from SSH2
array getLanguagesClient2Server()

Return a list of the languages the server supports, when receiving stuff from the client.

from SSH2
string getBannerMessage()

Returns the banner message.

from SSH2
mixed getServerPublicHostKey()

Returns the server public host key.

from SSH2
false|int getExitStatus()

Returns the exit status of an SSH command or false.

from SSH2
int getWindowColumns()

Returns the number of columns for the terminal window size.

from SSH2
int getWindowRows()

Returns the number of rows for the terminal window size.

from SSH2
setWindowColumns(int $value)

Sets the number of columns for the terminal window size.

from SSH2
setWindowRows(int $value)

Sets the number of rows for the terminal window size.

from SSH2
setWindowSize(int $columns = 80, int $rows = 24)

Sets the number of columns and rows for the terminal window size.

from SSH2
string __toString()

from SSH2
string getResourceId()

We use {} because that symbols should not be in URL according to {@link http://tools.ietf.org/html/rfc3986#section-2 RFC}.

from SSH2
disableStatCache()

Disable the stat cache

enableStatCache()

Enable the stat cache

clearStatCache()

Clear the stat cache

mixed pwd()

Returns the current directory name

_logError(string $response, int $status = -1)

Logs errors

mixed _realpath(string $path)

Canonicalize the Server-Side Path Name

bool chdir(string $dir)

Changes the current directory

mixed nlist(string $dir = '.', bool $recursive = false)

Returns a list of files in the given directory

mixed _nlist_helper(string $dir, bool $recursive, string $relativeDir)

Helper method for nlist

mixed rawlist(string $dir = '.', bool $recursive = false)

Returns a detailed list of files in the given directory

mixed _list(string $dir, bool $raw = true)

Reads a list, be it detailed or not, of files in the given directory

int _comparator(array $a, array $b)

Compares two rawlist entries using parameters set by setListOrder()

setListOrder()

Defines how nlist() and rawlist() will be sorted - if at all.

mixed size(string $filename)

Returns the file size, in bytes, or false, on failure

_update_stat_cache(string $path, mixed $value)

Save files / directories to cache

bool _remove_from_stat_cache(string $path)

Remove files / directories from cache

mixed _query_stat_cache($path)

Checks cache for path

mixed stat(string $filename)

Returns general information about a file.

mixed lstat(string $filename)

Returns general information about a file or symbolic link.

mixed _stat(string $filename, int $type)

Returns general information about a file or symbolic link

bool truncate(string $filename, int $new_size)

Truncates a file to a given length

bool touch(string $filename, int $time = null, int $atime = null)

Sets access and modification time of file.

bool chown(string $filename, int $uid, bool $recursive = false)

Changes file or directory owner

bool chgrp(string $filename, int $gid, bool $recursive = false)

Changes file or directory group

mixed chmod(int $mode, string $filename, bool $recursive = false)

Set permissions on a file.

bool _setstat(string $filename, string $attr, bool $recursive)

Sets information about a file

bool _setstat_recursive(string $path, string $attr, int $i)

Recursively sets information on directories on the SFTP server

mixed readlink(string $link)

Return the target of a symbolic link

bool symlink(string $target, string $link)

Create a symlink

bool mkdir($dir, $mode = -1, $recursive = false)

Creates a directory.

bool _mkdir_helper($dir, $attr)

Helper function for directory creation

bool rmdir(string $dir)

Removes a directory.

bool put(string $remote_file, string|resource $data, int $mode = self::SOURCE_STRING, int $start = -1, int $local_start = -1, callable|null $progressCallback = null)

Uploads a file to the SFTP server.

bool _read_put_responses(int $i)

Reads multiple successive SSHFXPWRITE responses

bool _close_handle(string $handle)

Close handle

mixed get(string $remote_file, string $local_file = false, int $offset, int $length = -1)

Downloads a file from the SFTP server.

bool delete(string $path, bool $recursive = true)

Deletes a file on the SFTP server.

bool _delete_recursive(string $path, int $i)

Recursively deletes directories on the SFTP server

bool file_exists(string $path)

Checks whether a file or directory exists

bool is_dir(string $path)

Tells whether the filename is a directory

bool is_file(string $path)

Tells whether the filename is a regular file

bool is_link(string $path)

Tells whether the filename is a symbolic link

mixed fileatime(string $path)

Gets last access time of file

mixed filemtime(string $path)

Gets file modification time

mixed fileperms(string $path)

Gets file permissions

mixed fileowner(string $path)

Gets file owner

mixed filegroup(string $path)

Gets file group

mixed filesize(string $path)

Gets file size

mixed filetype(string $path)

Gets file type

mixed _get_stat_cache_prop(string $path, string $prop)

Return a stat properity

mixed _get_lstat_cache_prop(string $path, string $prop)

Return an lstat properity

mixed _get_xstat_cache_prop($path, $prop, $type)

Return a stat or lstat properity

bool rename(string $oldname, string $newname)

Renames a file or a directory on the SFTP server

array _parseAttributes(string $response)

Parse Attributes

int _parseMode(int $mode)

Attempt to identify the file type

mixed _parseLongname(string $longname)

Parse Longname

bool _send_sftp_packet(int $type, string $data)

Sends SFTP Packets

string _get_sftp_packet()

Receives SFTP Packets

string getSFTPLog()

Returns a log of the packets that have been sent and received.

string getSFTPErrors()

Returns all errors

string getLastSFTPError()

Returns the last error

array getSupportedVersions()

Get supported SFTP versions

Details

at line 252
public SFTP __construct(string $host, int $port = 22, int $timeout = 10)

Default Constructor.

Connects to an SFTP server

Parameters

string $host
int $port
int $timeout

Return Value

SFTP

in SSH2 at line 994
public setCryptoEngine(int $engine)

Set Crypto Engine Mode

Possible $engine values: CRYPTMODEINTERNAL, CRYPTMODEMCRYPT

Parameters

int $engine

in SSH2 at line 1007
public bool _connect()

Connect to an SSHv2 server

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets
RuntimeException on other errors

in SSH2 at line 1122
public string _generate_identifier()

Generates the SSH identifier

You should overwrite this method in your own class if you want to use another identifier

Return Value

string

in SSH2 at line 1159
public _key_exchange(string $kexinit_payload_server)

Key Exchange

Parameters

string $kexinit_payload_server

Exceptions

UnexpectedValueException on receipt of unexpected packets
RuntimeException on other errors
NoSupportedAlgorithmsException when none of the algorithms phpseclib has loaded are compatible

in SSH2 at line 1770
public int|null _encryption_algorithm_to_key_size(string $algorithm)

Maps an encryption algorithm name to the number of key bytes.

Parameters

string $algorithm Name of the encryption algorithm

Return Value

int|null Number of bytes as an integer or null for unknown

in SSH2 at line 1810
public mixed _encryption_algorithm_to_crypt_instance(string $algorithm)

Maps an encryption algorithm name to an instance of a subclass of \phpseclib\Crypt\Base.

Parameters

string $algorithm Name of the encryption algorithm

Return Value

mixed Instance of \phpseclib\Crypt\Base or null for unknown

at line 390
public bool login($username)

Login

Parameters

$username

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

in SSH2 at line 1874
public bool _login($username)

Login Helper

Parameters

$username

Return Value

bool

See also

self::_login_helper()

in SSH2 at line 1907
public bool _login_helper(string $username, string $password = null)

Login Helper

Parameters

string $username
string $password

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets
RuntimeException on other errors

in SSH2 at line 2075
public bool _keyboard_interactive_login(string $username, string $password)

Login via keyboard-interactive authentication

See {@link http://tools.ietf.org/html/rfc4256 RFC4256} for details. This is not a full-featured keyboard-interactive authenticator.

Parameters

string $username
string $password

Return Value

bool

in SSH2 at line 2107
public bool _keyboard_interactive_process()

Handle the keyboard-interactive requests / responses.

Return Value

bool

Exceptions

RuntimeException on connection error

in SSH2 at line 2221
public bool _ssh_agent_login(string $username, Agent $agent)

Login with an ssh-agent provided key

Parameters

string $username
Agent $agent

Return Value

bool

in SSH2 at line 2245
public bool _privatekey_login($username, $privatekey)

Login with an RSA private key

Parameters

$username
$privatekey

Return Value

bool

Exceptions

RuntimeException on connection error

in SSH2 at line 2346
public setTimeout(mixed $timeout)

Set Timeout

$ssh->exec('ping 127.0.0.1'); on a Linux host will never return and will run indefinitely. setTimeout() makes it so it'll timeout. Setting $timeout to false or 0 will mean there is no timeout.

Parameters

mixed $timeout

in SSH2 at line 2356
public getStdError()

Get the output from stdError

in SSH2 at line 2373
public string exec(string $command, Callback $callback = null)

Execute Command

If $callback is set to false then \phpseclib\Net\SSH2::getchannelpacket(self::CHANNELEXEC) will need to be called manually. In all likelihood, this is not a feature you want to be taking advantage of.

Parameters

string $command
Callback $callback

Return Value

string

Exceptions

RuntimeException on connection error

in SSH2 at line 2521
public bool _initShell()

Creates an interactive shell

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets
RuntimeException on other errors

See also

self::read()
self::write()

in SSH2 at line 2624
public int _get_interactive_channel()

Return the channel to be used with read() / write()

Return Value

int

See also

self::read()
self::write()

in SSH2 at line 2642
public int _get_open_channel()

Return an available open channel

Return Value

int

in SSH2 at line 2667
public string read(string $expect = '', int $mode = self::READ_SIMPLE)

Returns the output of an interactive shell

Returns when there's a match for $expect, which can take the form of a string literal or, if $mode == self::READ_REGEX, a regular expression.

Parameters

string $expect
int $mode

Return Value

string

Exceptions

RuntimeException on connection error

See also

self::write()

in SSH2 at line 2711
public bool write(string $cmd)

Inputs a command into an interactive shell.

Parameters

string $cmd

Return Value

bool

Exceptions

RuntimeException on connection error

See also

self::read()

in SSH2 at line 2738
public bool startSubsystem(string $subsystem)

Start a subsystem.

Right now only one subsystem at a time is supported. To support multiple subsystem's stopSubsystem() could accept a string that contained the name of the subsystem, but at that point, only one subsystem of each type could be opened. To support multiple subsystem's of the same name maybe it'd be best if startSubsystem() generated a new channel id and returns that and then that that was passed into stopSubsystem() but that'll be saved for a future date and implemented if there's sufficient demand for such a feature.

Parameters

string $subsystem

Return Value

bool

See also

self::stopSubsystem()

in SSH2 at line 2800
public bool stopSubsystem()

Stops a subsystem.

Return Value

bool

See also

self::startSubsystem()

in SSH2 at line 2814
public reset()

Closes a channel

If read() timed out you might want to just close the channel and have it auto-restart on the next read() call

in SSH2 at line 2826
public isTimeout()

Is timeout?

Did exec() or read() return because they timed out or because they encountered the end?

in SSH2 at line 2836
public disconnect()

Disconnect

in SSH2 at line 2853
public __destruct()

Destructor.

Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call disconnect().

in SSH2 at line 2864
public bool isConnected()

Is the connection still active?

Return Value

bool

in SSH2 at line 2875
public bool isAuthenticated()

Have you successfully been logged in?

Return Value

bool

in SSH2 at line 2890
public string _get_binary_packet()

Gets Binary Packets

See '6. Binary Packet Protocol' of rfc4253 for more info.

Return Value

string

Exceptions

RuntimeException on connection errors

See also

self::_send_binary_packet()

in SSH2 at line 2977
public string _filter($payload)

Filter Binary Packets

Because some binary packets need to be ignored...

Parameters

$payload

Return Value

string

See also

self::_get_binary_packet()

in SSH2 at line 3102
public enableQuietMode()

Enable Quiet Mode

Suppress stderr from output

in SSH2 at line 3114
public disableQuietMode()

Disable Quiet Mode

Show stderr in output

in SSH2 at line 3127
public bool isQuietModeEnabled()

Returns whether Quiet Mode is enabled or not

Return Value

bool

See also

self::enableQuietMode()
self::disableQuietMode()

in SSH2 at line 3137
public enablePTY()

Enable request-pty when using exec()

in SSH2 at line 3147
public disablePTY()

Disable request-pty when using exec()

in SSH2 at line 3160
public bool isPTYEnabled()

Returns whether request-pty is enabled or not

Return Value

bool

See also

self::enablePTY()
self::disablePTY()

in SSH2 at line 3175
public mixed _get_channel_packet($client_channel, $skip_extended = false)

Gets channel data

Returns the data as a string if it's available and false if not.

Parameters

$client_channel
$skip_extended

Return Value

mixed

Exceptions

RuntimeException on connection error

in SSH2 at line 3392
public bool _send_binary_packet(string $data, string $logged = null)

Sends Binary Packets

See '6. Binary Packet Protocol' of rfc4253 for more info.

Parameters

string $data
string $logged

Return Value

bool

See also

self::_get_binary_packet()

in SSH2 at line 3449
public _append_log($message_number, $message)

Logs data packets

Makes sure that only the last 1MB worth of packets will be logged

Parameters

$message_number
$message

in SSH2 at line 3527
public bool _send_channel_packet(int $client_channel, string $data)

Sends channel data

Spans multiple SSHMSGCHANNEL_DATAs if appropriate

Parameters

int $client_channel
string $data

Return Value

bool

in SSH2 at line 3575
public bool _close_channel(int $client_channel, bool $want_reply = false)

Closes and flushes a channel

\phpseclib\Net\SSH2 doesn't properly close most channels. For exec() channels are normally closed by the server and for SFTP channels are presumably closed when the client disconnects. This functions is intended for SCP more than anything.

Parameters

int $client_channel
bool $want_reply

Return Value

bool

at line 2838
public bool _disconnect(int $reason)

Disconnect

Parameters

int $reason

Return Value

bool

in SSH2 at line 3629
public string _string_shift(string $string, int $index = 1)

String Shift

Inspired by array_shift

Parameters

string $string
int $index

Return Value

string

in SSH2 at line 3646
public _define_array()

Define Array

Takes any number of arrays whose indices are integers and whose values are strings and defines a bunch of named constants from it, using the value as the name of the constant and the index as the value of the constant. If any of the constants that would be defined already exists, none of the constants will be defined.

in SSH2 at line 3668
public array|false|string getLog()

Returns a log of the packets that have been sent and received.

Returns a string if NETSSH2LOGGING == self::LOGCOMPLEX, an array if NETSSH2LOGGING == self::LOGSIMPLE and false if !defined('NETSSH2LOGGING')

Return Value

array|false|string

in SSH2 at line 3694
public string _format_log(array $message_log, array $message_number_log)

Formats a log for printing

Parameters

array $message_log
array $message_number_log

Return Value

string

in SSH2 at line 3729
public string _format_log_helper(array $matches)

Helper function for formatlog

For use with pregreplacecallback()

Parameters

array $matches

Return Value

string

in SSH2 at line 3743
public _on_channel_open()

Helper function for agent->onchannel_open()

Used when channels are created to inform agent of said channel opening. Must be called after channel open confirmation received

in SSH2 at line 3759
public mixed _array_intersect_first(array $array1, array $array2)

Returns the first value of the intersection of two arrays or false if the intersection is empty.

The order is defined by the first parameter.

Parameters

array $array1
array $array2

Return Value

mixed False if intersection is empty, else intersected value.

in SSH2 at line 3775
public string getErrors()

Returns all errors

Return Value

string

in SSH2 at line 3786
public string getLastError()

Returns the last error

Return Value

string

in SSH2 at line 3801
public string getServerIdentification()

Return the server identification.

Return Value

string

in SSH2 at line 3814
public array getKexAlgorithms()

Return a list of the key exchange algorithms the server supports.

Return Value

array

in SSH2 at line 3827
public array getServerHostKeyAlgorithms()

Return a list of the host key (public key) algorithms the server supports.

Return Value

array

in SSH2 at line 3840
public array getEncryptionAlgorithmsClient2Server()

Return a list of the (symmetric key) encryption algorithms the server supports, when receiving stuff from the client.

Return Value

array

in SSH2 at line 3853
public array getEncryptionAlgorithmsServer2Client()

Return a list of the (symmetric key) encryption algorithms the server supports, when sending stuff to the client.

Return Value

array

in SSH2 at line 3866
public array getMACAlgorithmsClient2Server()

Return a list of the MAC algorithms the server supports, when receiving stuff from the client.

Return Value

array

in SSH2 at line 3879
public array getMACAlgorithmsServer2Client()

Return a list of the MAC algorithms the server supports, when sending stuff to the client.

Return Value

array

in SSH2 at line 3892
public array getCompressionAlgorithmsClient2Server()

Return a list of the compression algorithms the server supports, when receiving stuff from the client.

Return Value

array

in SSH2 at line 3905
public array getCompressionAlgorithmsServer2Client()

Return a list of the compression algorithms the server supports, when sending stuff to the client.

Return Value

array

in SSH2 at line 3918
public array getLanguagesServer2Client()

Return a list of the languages the server supports, when sending stuff to the client.

Return Value

array

in SSH2 at line 3931
public array getLanguagesClient2Server()

Return a list of the languages the server supports, when receiving stuff from the client.

Return Value

array

in SSH2 at line 3947
public string getBannerMessage()

Returns the banner message.

Quoting from the RFC, "in some jurisdictions, sending a warning message before authentication may be relevant for getting legal protection."

Return Value

string

in SSH2 at line 3963
public mixed getServerPublicHostKey()

Returns the server public host key.

Caching this the first time you connect to a server and checking the result on subsequent connections is recommended. Returns false if the server signature is not signed correctly with the public host key.

Return Value

mixed

Exceptions

RuntimeException on badly formatted keys
NoSupportedAlgorithmsException when the key isn't in a supported format

in SSH2 at line 4104
public false|int getExitStatus()

Returns the exit status of an SSH command or false.

Return Value

false|int

in SSH2 at line 4118
public int getWindowColumns()

Returns the number of columns for the terminal window size.

Return Value

int

in SSH2 at line 4129
public int getWindowRows()

Returns the number of rows for the terminal window size.

Return Value

int

in SSH2 at line 4140
public setWindowColumns(int $value)

Sets the number of columns for the terminal window size.

Parameters

int $value

in SSH2 at line 4151
public setWindowRows(int $value)

Sets the number of rows for the terminal window size.

Parameters

int $value

in SSH2 at line 4163
public setWindowSize(int $columns = 80, int $rows = 24)

Sets the number of columns and rows for the terminal window size.

Parameters

int $columns
int $rows

in SSH2 at line 4172
public string __toString()

Return Value

string

in SSH2 at line 4185
public string getResourceId()

We use {} because that symbols should not be in URL according to {@link http://tools.ietf.org/html/rfc3986#section-2 RFC}.

It will safe us from any conflicts, because otherwise regexp will match all alphanumeric domains.

Return Value

string

at line 546
public disableStatCache()

Disable the stat cache

at line 556
public enableStatCache()

Enable the stat cache

at line 566
public clearStatCache()

Clear the stat cache

at line 577
public mixed pwd()

Returns the current directory name

Return Value

mixed

at line 589
public _logError(string $response, int $status = -1)

Logs errors

Parameters

string $response
int $status

at line 617
public mixed _realpath(string $path)

Canonicalize the Server-Side Path Name

SFTP doesn't provide a mechanism by which the current working directory can be changed, so we'll emulate it. Returns the absolute (canonicalized) path.

Parameters

string $path

Return Value

mixed

Exceptions

UnexpectedValueException on receipt of unexpected packets

See also

self::chdir()

at line 673
public bool chdir(string $dir)

Changes the current directory

Parameters

string $dir

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 735
public mixed nlist(string $dir = '.', bool $recursive = false)

Returns a list of files in the given directory

Parameters

string $dir
bool $recursive

Return Value

mixed

at line 749
public mixed _nlist_helper(string $dir, bool $recursive, string $relativeDir)

Helper method for nlist

Parameters

string $dir
bool $recursive
string $relativeDir

Return Value

mixed

at line 784
public mixed rawlist(string $dir = '.', bool $recursive = false)

Returns a detailed list of files in the given directory

Parameters

string $dir
bool $recursive

Return Value

mixed

at line 819
public mixed _list(string $dir, bool $raw = true)

Reads a list, be it detailed or not, of files in the given directory

Parameters

string $dir
bool $raw

Return Value

mixed

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 927
public int _comparator(array $a, array $b)

Compares two rawlist entries using parameters set by setListOrder()

Intended for use with uasort()

Parameters

array $a
array $b

Return Value

int

at line 1001
public setListOrder()

Defines how nlist() and rawlist() will be sorted - if at all.

If sorting is enabled directories and files will be sorted independently with directories appearing before files in the resultant array that is returned.

Any parameter returned by stat is a valid sort parameter for this function. Filename comparisons are case insensitive.

Examples:

$sftp->setListOrder('filename', SORTASC); $sftp->setListOrder('size', SORTDESC, 'filename', SORT_ASC); $sftp->setListOrder(true); Separates directories from files but doesn't do any sorting beyond that $sftp->setListOrder(); Don't do any sort of sorting

at line 1026
public mixed size(string $filename)

Returns the file size, in bytes, or false, on failure

Files larger than 4GB will show up as being exactly 4GB.

Parameters

string $filename

Return Value

mixed

at line 1046
public _update_stat_cache(string $path, mixed $value)

Save files / directories to cache

Parameters

string $path
mixed $value

at line 1090
public bool _remove_from_stat_cache(string $path)

Remove files / directories from cache

Parameters

string $path

Return Value

bool

at line 1117
public mixed _query_stat_cache($path)

Checks cache for path

Mainly used by file_exists

Parameters

$path

Return Value

mixed

at line 1140
public mixed stat(string $filename)

Returns general information about a file.

Returns an array on success and false otherwise.

Parameters

string $filename

Return Value

mixed

at line 1197
public mixed lstat(string $filename)

Returns general information about a file or symbolic link.

Returns an array on success and false otherwise.

Parameters

string $filename

Return Value

mixed

at line 1265
public mixed _stat(string $filename, int $type)

Returns general information about a file or symbolic link

Determines information without calling \phpseclib\Net\SFTP::realpath(). The second parameter can be either NETSFTPSTAT or NETSFTP_LSTAT.

Parameters

string $filename
int $type

Return Value

mixed

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1293
public bool truncate(string $filename, int $new_size)

Truncates a file to a given length

Parameters

string $filename
int $new_size

Return Value

bool

at line 1312
public bool touch(string $filename, int $time = null, int $atime = null)

Sets access and modification time of file.

If the file does not exist, it will be created.

Parameters

string $filename
int $time
int $atime

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1362
public bool chown(string $filename, int $uid, bool $recursive = false)

Changes file or directory owner

Returns true on success or false on error.

Parameters

string $filename
int $uid
bool $recursive

Return Value

bool

at line 1382
public bool chgrp(string $filename, int $gid, bool $recursive = false)

Changes file or directory group

Returns true on success or false on error.

Parameters

string $filename
int $gid
bool $recursive

Return Value

bool

at line 1402
public mixed chmod(int $mode, string $filename, bool $recursive = false)

Set permissions on a file.

Returns the new file permissions on success or false on error. If $recursive is true than this just returns true or false.

Parameters

int $mode
string $filename
bool $recursive

Return Value

mixed

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1450
public bool _setstat(string $filename, string $attr, bool $recursive)

Sets information about a file

Parameters

string $filename
string $attr
bool $recursive

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1508
public bool _setstat_recursive(string $path, string $attr, int $i)

Recursively sets information on directories on the SFTP server

Minimizes directory lookups and SSHFXPSTATUS requests for speed.

Parameters

string $path
string $attr
int $i

Return Value

bool

Return the target of a symbolic link

Parameters

string $link

Return Value

mixed

Exceptions

UnexpectedValueException on receipt of unexpected packets

Create a symlink

symlink() creates a symbolic link to the existing target with the specified name link.

Parameters

string $target
string $link

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1656
public bool mkdir($dir, $mode = -1, $recursive = false)

Creates a directory.

Parameters

$dir
$mode
$recursive

Return Value

bool

at line 1692
public bool _mkdir_helper($dir, $attr)

Helper function for directory creation

Parameters

$dir
$attr

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1720
public bool rmdir(string $dir)

Removes a directory.

Parameters

string $dir

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1804
public bool put(string $remote_file, string|resource $data, int $mode = self::SOURCE_STRING, int $start = -1, int $local_start = -1, callable|null $progressCallback = null)

Uploads a file to the SFTP server.

By default, \phpseclib\Net\SFTP::put() does not read from the local filesystem. $data is dumped directly into $remote_file. So, for example, if you set $data to 'filename.ext' and then do \phpseclib\Net\SFTP::get(), you will get a file, twelve bytes long, containing 'filename.ext' as its contents.

Setting $mode to self::SOURCELOCALFILE will change the above behavior. With self::SOURCELOCALFILE, $remotefile will contain as many bytes as filename.ext does on your local filesystem. If your filename.ext is 1MB then that is how large $remotefile will be, as well.

Setting $mode to self::SOURCE_CALLBACK will use $data as callback function, which gets only one parameter -- number of bytes to return, and returns a string if there is some data or null if there is no more data

If $data is a resource then it'll be used as a resource instead.

Currently, only binary mode is supported. As such, if the line endings need to be adjusted, you will need to take care of that, yourself.

$mode can take an additional two parameters - self::RESUME and self::RESUME_START. These are bitwise AND'd with $mode. So if you want to resume upload of a 300mb file on the local file system you'd set $mode to the following:

self::SOURCELOCALFILE | self::RESUME

If you wanted to simply append the full contents of a local file to the full contents of a remote file you'd replace self::RESUME with self::RESUME_START.

If $mode & (self::RESUME | self::RESUMESTART) then self::RESUMESTART will be assumed.

$start and $localstart give you more fine grained control over this process and take precident over self::RESUME when they're non-negative. ie. $start could let you write at the end of a file (like self::RESUME) or in the middle of one. $localstart could let you start your reading from the end of a file (like self::RESUME_START) or in the middle of one.

Setting $localstart to > 0 or $mode | self::RESUMESTART doesn't do anything unless $mode | self::SOURCELOCALFILE.

Parameters

string $remote_file
string|resource $data
int $mode
int $start
int $local_start
callable|null $progressCallback

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets
BadFunctionCallException if you're uploading via a callback and the callback function is invalid
FileNotFoundException if you're uploading via a file and the file doesn't exist

at line 1954
public bool _read_put_responses(int $i)

Reads multiple successive SSHFXPWRITE responses

Sending an SSHFXPWRITE packet and immediately reading its response isn't as efficient as blindly sending out $i SSHFXPWRITEs, in succession, and then reading $i responses.

Parameters

int $i

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 1980
public bool _close_handle(string $handle)

Close handle

Parameters

string $handle

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 2019
public mixed get(string $remote_file, string $local_file = false, int $offset, int $length = -1)

Downloads a file from the SFTP server.

Returns a string containing the contents of $remotefile if $localfile is left undefined or a boolean false if the operation was unsuccessful. If $local_file is defined, returns true or false depending on the success of the operation.

$offset and $length can be used to download files in chunks.

Parameters

string $remote_file
string $local_file
int $offset
int $length

Return Value

mixed

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 2132
public bool delete(string $path, bool $recursive = true)

Deletes a file on the SFTP server.

Parameters

string $path
bool $recursive

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 2181
public bool _delete_recursive(string $path, int $i)

Recursively deletes directories on the SFTP server

Minimizes directory lookups and SSHFXPSTATUS requests for speed.

Parameters

string $path
int $i

Return Value

bool

at line 2247
public bool file_exists(string $path)

Checks whether a file or directory exists

Parameters

string $path

Return Value

bool

at line 2270
public bool is_dir(string $path)

Tells whether the filename is a directory

Parameters

string $path

Return Value

bool

at line 2286
public bool is_file(string $path)

Tells whether the filename is a regular file

Parameters

string $path

Return Value

bool

Tells whether the filename is a symbolic link

Parameters

string $path

Return Value

bool

at line 2318
public mixed fileatime(string $path)

Gets last access time of file

Parameters

string $path

Return Value

mixed

at line 2330
public mixed filemtime(string $path)

Gets file modification time

Parameters

string $path

Return Value

mixed

at line 2342
public mixed fileperms(string $path)

Gets file permissions

Parameters

string $path

Return Value

mixed

at line 2354
public mixed fileowner(string $path)

Gets file owner

Parameters

string $path

Return Value

mixed

at line 2366
public mixed filegroup(string $path)

Gets file group

Parameters

string $path

Return Value

mixed

at line 2378
public mixed filesize(string $path)

Gets file size

Parameters

string $path

Return Value

mixed

at line 2390
public mixed filetype(string $path)

Gets file type

Parameters

string $path

Return Value

mixed

at line 2425
public mixed _get_stat_cache_prop(string $path, string $prop)

Return a stat properity

Uses cache if appropriate.

Parameters

string $path
string $prop

Return Value

mixed

at line 2440
public mixed _get_lstat_cache_prop(string $path, string $prop)

Return an lstat properity

Uses cache if appropriate.

Parameters

string $path
string $prop

Return Value

mixed

at line 2455
public mixed _get_xstat_cache_prop($path, $prop, $type)

Return a stat or lstat properity

Uses cache if appropriate.

Parameters

$path
$prop
$type

Return Value

mixed

at line 2485
public bool rename(string $oldname, string $newname)

Renames a file or a directory on the SFTP server

Parameters

string $oldname
string $newname

Return Value

bool

Exceptions

UnexpectedValueException on receipt of unexpected packets

at line 2533
public array _parseAttributes(string $response)

Parse Attributes

See '7. File Attributes' of draft-ietf-secsh-filexfer-13 for more info.

Parameters

string $response

Return Value

array

at line 2587
public int _parseMode(int $mode)

Attempt to identify the file type

Quoting the SFTP RFC, "Implementations MUST NOT send bits that are not defined" but they seem to anyway

Parameters

int $mode

Return Value

int

at line 2634
public mixed _parseLongname(string $longname)

Parse Longname

SFTPv3 doesn't provide any easy way of identifying a file type. You could try to open a file as a directory and see if an error is returned or you could try to parse the SFTPv3-specific longname field of the SSHFXPNAME packet. That's what this function does. The result is returned using the {@link http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-5.2 SFTPv4 type constants}.

If the longname is in an unrecognized format bool(false) is returned.

Parameters

string $longname

Return Value

mixed

at line 2666
public bool _send_sftp_packet(int $type, string $data)

Sends SFTP Packets

See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info.

Parameters

int $type
string $data

Return Value

bool

See also

self::_get_sftp_packet()
self::_send_channel_packet()

at line 2707
public string _get_sftp_packet()

Receives SFTP Packets

See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info.

Incidentally, the number of SSHMSGCHANNELDATA messages has no bearing on the number of SFTP packets present. There can be one SSHMSGCHANNELDATA messages containing two SFTP packets or there can be two SSHMSGCHANNEL_DATA messages containing one SFTP packet.

Return Value

string

See also

self::_send_sftp_packet()

at line 2778
public string getSFTPLog()

Returns a log of the packets that have been sent and received.

Returns a string if NETSFTPLOGGING == NETSFTPLOGCOMPLEX, an array if NETSFTPLOGGING == NETSFTPLOGSIMPLE and false if !defined('NETSFTPLOGGING')

Return Value

string or Array

at line 2800
public string getSFTPErrors()

Returns all errors

Return Value

string

at line 2811
public string getLastSFTPError()

Returns the last error

Return Value

string

at line 2822
public array getSupportedVersions()

Get supported SFTP versions

Return Value

array