Documentation

Stream
in package

SFTP Stream Wrapper

Tags
author

Jim Wigginton terrafrost@php.net

access

public

Table of Contents

Properties

$context  : resource
Context resource
$instances  : array<string|int, mixed>
SFTP instances
$entries  : array<string|int, mixed>
Directory entries
$eof  : bool
EOF flag
$mode  : string
Mode
$notification  : callable
Notification callback function
$path  : string
Path
$pos  : int
Position
$sftp  : object
SFTP instance
$size  : int
Size

Methods

__call()  : mixed
__call Magic Method
__construct()  : mixed
The Constructor
register()  : bool
Registers this class as a URL wrapper.
parse_path()  : string
Path Parser
_dir_closedir()  : bool
Close directory handle
_dir_opendir()  : bool
Open directory handle
_dir_readdir()  : mixed
Read entry from directory handle
_dir_rewinddir()  : bool
Rewind directory handle
_mkdir()  : bool
Create a directory
_rename()  : bool
Renames a file or directory
_rmdir()  : bool
Removes a directory
_stream_cast()  : resource
Retrieve the underlaying resource
_stream_close()  : mixed
Close an resource
_stream_eof()  : bool
Tests for end-of-file on a file pointer
_stream_flush()  : bool
Flushes the output
_stream_lock()  : bool
Advisory file locking
_stream_metadata()  : bool
Change stream options
_stream_open()  : bool
Opens file or URL
_stream_read()  : mixed
Read from stream
_stream_seek()  : bool
Seeks to specific location in a stream
_stream_set_option()  : bool
Change stream options
_stream_stat()  : mixed
Retrieve information about a file resource
_stream_tell()  : int
Retrieve the current position of a stream
_stream_truncate()  : bool
Truncate stream
_stream_write()  : mixed
Write to stream
_unlink()  : bool
Delete a file
_url_stat()  : mixed
Retrieve information about a file

Properties

$context

Context resource

public resource $context

Technically this needs to be publicly accessible so PHP can set it directly

Tags
access

public

$instances

SFTP instances

public static array<string|int, mixed> $instances

Rather than re-create the connection we re-use instances if possible

$entries

Directory entries

private array<string|int, mixed> $entries
Tags
access

private

$eof

EOF flag

private bool $eof
Tags
access

private

$mode

Mode

private string $mode
Tags
access

private

$notification

Notification callback function

private callable $notification
Tags
access

public

$path

Path

private string $path
Tags
access

private

$pos

Position

private int $pos
Tags
access

private

$sftp

SFTP instance

private object $sftp
Tags
access

private

$size

Size

private int $size
Tags
access

private

Methods

__call()

__call Magic Method

public __call(string $name, array<string|int, mixed> $arguments) : mixed

When you're utilizing an SFTP stream you're not calling the methods in this class directly - PHP is calling them for you. Which kinda begs the question... what methods is PHP calling and what parameters is it passing to them? This function lets you figure that out.

If NET_SFTP_STREAM_LOGGING is defined all calls will be output on the screen and then (regardless of whether or not NET_SFTP_STREAM_LOGGING is enabled) the parameters will be passed through to the appropriate method.

Parameters
$name : string
$arguments : array<string|int, mixed>
Tags
access

public

__construct()

The Constructor

public __construct() : mixed
Tags
access

public

register()

Registers this class as a URL wrapper.

public static register([string $protocol = 'sftp' ]) : bool
Parameters
$protocol : string = 'sftp'

The wrapper name to be registered.

Tags
access

public

Return values
bool

True on success, false otherwise.

parse_path()

Path Parser

protected parse_path(string $path) : string

Extract a path from a URI and actually connect to an SSH server if appropriate

If "notification" is set as a context parameter the message code for successful login is NET_SSH2_MSG_USERAUTH_SUCCESS. For a failed login it's NET_SSH2_MSG_USERAUTH_FAILURE.

Parameters
$path : string
Tags
access

private

Return values
string

_dir_closedir()

Close directory handle

private _dir_closedir() : bool
Tags
access

public

Return values
bool

_dir_opendir()

Open directory handle

private _dir_opendir(string $path, int $options) : bool

The only $options is "whether or not to enforce safe_mode (0x04)". Since safe mode was deprecated in 5.3 and removed in 5.4 I'm just going to ignore it.

Also, nlist() is the best that this function is realistically going to be able to do. When an SFTP client sends a SSH_FXP_READDIR packet you don't generally get info on just one file but on multiple files. Quoting the SFTP specs:

The SSH_FXP_NAME response has the following format:

   uint32     id
   uint32     count
   repeats count times:
           string     filename
           string     longname
           ATTRS      attrs
Parameters
$path : string
$options : int
Tags
access

public

Return values
bool

_dir_readdir()

Read entry from directory handle

private _dir_readdir() : mixed
Tags
access

public

_dir_rewinddir()

Rewind directory handle

private _dir_rewinddir() : bool
Tags
access

public

Return values
bool

_mkdir()

Create a directory

private _mkdir(string $path, int $mode, int $options) : bool

Only valid $options is STREAM_MKDIR_RECURSIVE

Parameters
$path : string
$mode : int
$options : int
Tags
access

public

Return values
bool

_rename()

Renames a file or directory

private _rename(string $path_from, string $path_to) : bool

Attempts to rename oldname to newname, moving it between directories if necessary. If newname exists, it will be overwritten. This is a departure from what \phpseclib3\Net\SFTP does.

Parameters
$path_from : string
$path_to : string
Tags
access

public

Return values
bool

_rmdir()

Removes a directory

private _rmdir(string $path, int $options) : bool

Only valid $options is STREAM_MKDIR_RECURSIVE per http://php.net/streamwrapper.rmdir, however, http://php.net/rmdir does not have a $recursive parameter as mkdir() does so I don't know how STREAM_MKDIR_RECURSIVE is supposed to be set. Also, when I try it out with rmdir() I get 8 as $options. What does 8 correspond to?

Parameters
$path : string
$options : int
Tags
access

public

Return values
bool

_stream_cast()

Retrieve the underlaying resource

private _stream_cast(int $cast_as) : resource
Parameters
$cast_as : int
Tags
access

public

Return values
resource

_stream_close()

Close an resource

private _stream_close() : mixed
Tags
access

public

_stream_eof()

Tests for end-of-file on a file pointer

private _stream_eof() : bool

In my testing there are four classes functions that normally effect the pointer: fseek, fputs / fwrite, fgets / fread and ftruncate.

Only fgets / fread, however, results in feof() returning true. do fputs($fp, 'aaa') on a blank file and feof() will return false. do fread($fp, 1) and feof() will then return true. do fseek($fp, 10) on ablank file and feof() will return false. do fread($fp, 1) and feof() will then return true.

Tags
access

public

Return values
bool

_stream_flush()

Flushes the output

private _stream_flush() : bool

See http://php.net/fflush. Always returns true because \phpseclib3\Net\SFTP doesn't cache stuff before writing

Tags
access

public

Return values
bool

_stream_lock()

Advisory file locking

private _stream_lock(int $operation) : bool
Parameters
$operation : int
Tags
access

public

Return values
bool

_stream_metadata()

Change stream options

private _stream_metadata(string $path, int $option, mixed $var) : bool
Parameters
$path : string
$option : int
$var : mixed
Tags
access

public

Return values
bool

_stream_open()

Opens file or URL

private _stream_open(string $path, string $mode, int $options, string &$opened_path) : bool
Parameters
$path : string
$mode : string
$options : int
$opened_path : string
Tags
access

public

Return values
bool

_stream_read()

Read from stream

private _stream_read(int $count) : mixed
Parameters
$count : int
Tags
access

public

_stream_seek()

Seeks to specific location in a stream

private _stream_seek(int $offset, int $whence) : bool
Parameters
$offset : int
$whence : int
Tags
access

public

Return values
bool

_stream_set_option()

Change stream options

private _stream_set_option(int $option, int $arg1, int $arg2) : bool

STREAM_OPTION_WRITE_BUFFER isn't supported for the same reason stream_flush isn't. The other two aren't supported because of limitations in \phpseclib3\Net\SFTP.

Parameters
$option : int
$arg1 : int
$arg2 : int
Tags
access

public

Return values
bool

_stream_stat()

Retrieve information about a file resource

private _stream_stat() : mixed
Tags
access

public

_stream_tell()

Retrieve the current position of a stream

private _stream_tell() : int
Tags
access

public

Return values
int

_stream_truncate()

Truncate stream

private _stream_truncate(int $new_size) : bool
Parameters
$new_size : int
Tags
access

public

Return values
bool

_stream_write()

Write to stream

private _stream_write(string $data) : mixed
Parameters
$data : string
Tags
access

public

Delete a file

private _unlink(string $path) : bool
Parameters
$path : string
Tags
access

public

Return values
bool

_url_stat()

Retrieve information about a file

private _url_stat(string $path, int $flags) : mixed

Ignores the STREAM_URL_STAT_QUIET flag because the entirety of \phpseclib3\Net\SFTP\Stream is quiet by default might be worthwhile to reconstruct bits 12-16 (ie. the file type) if mode doesn't have them but we'll cross that bridge when and if it's reached

Parameters
$path : string
$flags : int
Tags
access

public


        
On this page

Search results