\Horde_Vfs_Ssh2

VFS implementation for an SSH2 server.

This module requires the SSH2 (version 0.10+) PECL package.

Required values for $params:

username - (string) The username with which to connect to the ssh2 server.
password - (string) The password with which to connect to the ssh2 server.
hostspec - (string) The ssh2 server to connect to.

Optional values for $params:

port - (integer) The port used to connect to the ssh2 server if other than
22.

Copyright 2006-2017 Horde LLC (http://www.horde.org/)

See the enclosed file LICENSE for license information (LGPL). If you did not receive this file, see http://www.horde.org/licenses/lgpl21.

Summary

Methods
Properties
Constants
__construct()
hasFeature()
checkCredentials()
setParams()
getParam()
size()
getFolderSize()
read()
readFile()
readByteRange()
write()
writeData()
move()
copy()
delete()
deleteFile()
rename()
exists()
createFolder()
autocreatePath()
isFolder()
deleteFolder()
emptyFolder()
listFolder()
getCurrentDirectory()
changePermissions()
getRequiredCredentials()
getModifiablePermissions()
getVFSSize()
setQuota()
setQuotaRoot()
getQuota()
readStream()
No public properties found
No constants found
_connect()
_checkDestination()
_copyRecursive()
_listFolder()
_filterMatch()
_checkQuotaWrite()
_getDataSize()
_ensureSeekable()
_checkQuotaDelete()
_getPath()
_setPath()
_parentDir()
_send()
_recv()
_wrap()
$_params
$_credentials
$_permissions
$_features
$_vfsSize
$_stream
$_sftp
$_cwd
$_uids
$_gids
N/A
No private methods found
No private properties found
N/A

Properties

$_params

$_params : array

Hash containing connection parameters.

Type

array

$_credentials

$_credentials : array

List of additional credentials required for this VFS backend.

Type

array

$_permissions

$_permissions : array

List of permissions and if they can be changed in this VFS backend.

Type

array

$_features

$_features : array

List of features that the VFS driver supports.

Type

array

$_vfsSize

$_vfsSize : integer

The current size, in bytes, of the VFS tree.

Type

integer

$_stream

$_stream : resource

Variable holding the connection to the ssh2 server.

Type

resource

$_sftp

$_sftp : resource

The SFTP resource stream.

Type

resource

$_cwd

$_cwd : string

The current working directory.

Type

string

$_uids

$_uids : array

Local cache array for user IDs.

Type

array

$_gids

$_gids : array

Local cache array for group IDs.

Type

array

Methods

__construct()

__construct(array  $params = array()) 

Constructor.

Parameters

array $params

A hash containing connection parameters.

hasFeature()

hasFeature(string  $feature) : boolean

Returns whether the drivers supports a certain feature.

Parameters

string $feature

A feature name. See {@link $_features} for a list of possible features.

Returns

boolean —

True if the feature is supported.

checkCredentials()

checkCredentials() 

Checks the credentials that we have by calling _connect(), to see if there is a valid login.

Throws

\Horde_Vfs_Exception

setParams()

setParams(array  $params = array()) 

Sets configuration parameters.

Parameters

array $params

An associative array with parameter names as keys.

getParam()

getParam(string  $name) : mixed

Returns configuration parameters.

Parameters

string $name

The parameter to return.

Returns

mixed —

The parameter value or null if it doesn't exist.

size()

size(string  $path, string  $name) : integer

Returns the size of a file.

Parameters

string $path

The path of the file.

string $name

The filename.

Throws

\Horde_Vfs_Exception

Returns

integer —

The size of the file in bytes.

getFolderSize()

getFolderSize(string  $path = null) : integer

Returns the size of a folder.

Parameters

string $path

The path of the folder.

Throws

\Horde_Vfs_Exception

Returns

integer —

The size of the folder, in bytes.

read()

read(string  $path, string  $name) : string

Retrieves a file from the VFS.

Parameters

string $path

The pathname to the file.

string $name

The filename to retrieve.

Throws

\Horde_Vfs_Exception

Returns

string —

The file data.

readFile()

readFile(string  $path, string  $name) : string

Retrieves a file from the VFS as an on-disk local file.

This function provides a file on local disk with the data of a VFS file in it. This file cannot be modified! The behavior if you do modify it is undefined. It will be removed at the end of the request.

Parameters

string $path

The pathname to the file.

string $name

The filename to retrieve.

Throws

\Horde_Vfs_Exception

Returns

string —

A local filename.

readByteRange()

readByteRange(string  $path, string  $name, integer  $offset, integer  $length, integer  $remaining) : string

Retrieves a part of a file from the VFS. Particularly useful when reading large files which would exceed the PHP memory limits if they were stored in a string.

Parameters

string $path

The pathname to the file.

string $name

The filename to retrieve.

integer $offset

The offset of the part. (The new offset will be stored in here).

integer $length

The length of the part. If the length = -1, the whole part after the offset is retrieved. If more bytes are given as exists after the given offset. Only the available bytes are read.

integer $remaining

The bytes that are left, after the part that is retrieved.

Throws

\Horde_Vfs_Exception

Returns

string —

The file data.

write()

write(string  $path, string  $name, string  $tmpFile, boolean  $autocreate = false) 

Stores a file in the VFS.

Parameters

string $path

The path to store the file in.

string $name

The filename to use.

string $tmpFile

The temporary file containing the data to be stored.

boolean $autocreate

Automatically create directories?

Throws

\Horde_Vfs_Exception

writeData()

writeData(string  $path, string  $name, string|resource  $data, boolean  $autocreate = false) 

Stores a file in the VFS from raw data.

Parameters

string $path

The path to store the file in.

string $name

The filename to use.

string|resource $data

The data as a string or stream resource. Resources allowed @since 2.4.0

boolean $autocreate

Automatically create directories?

Throws

\Horde_Vfs_Exception

move()

move(string  $path, string  $name, string  $dest, boolean  $autocreate = false) 

Moves a file through the backend.

Parameters

string $path

The path of the original file.

string $name

The name of the original file.

string $dest

The destination file name.

boolean $autocreate

Auto-create the directory if it doesn't exist?

Throws

\Horde_Vfs_Exception

copy()

copy(string  $path, string  $name, string  $dest, boolean  $autocreate = false) 

Copies a file through the backend.

Parameters

string $path

The path of the original file.

string $name

The name of the original file.

string $dest

The name of the destination directory.

boolean $autocreate

Auto-create the directory if it doesn't exist?

Throws

\Horde_Vfs_Exception

delete()

delete(  $path,   $name) 

Alias to deleteFile()

Parameters

$path
$name

deleteFile()

deleteFile(string  $path, string  $name) 

Deletes a file from the VFS.

Parameters

string $path

The path to delete the file from.

string $name

The filename to delete.

Throws

\Horde_Vfs_Exception

rename()

rename(string  $oldpath, string  $oldname, string  $newpath, string  $newname) 

Renames a file in the VFS.

Parameters

string $oldpath

The old path to the file.

string $oldname

The old filename.

string $newpath

The new path of the file.

string $newname

The new filename.

Throws

\Horde_Vfs_Exception

exists()

exists(string  $path, string  $name) : boolean

Returns if a given file or folder exists in a folder.

Parameters

string $path

The path to the folder.

string $name

The file or folder name.

Returns

boolean —

True if it exists, false otherwise.

createFolder()

createFolder(string  $path, string  $name) 

Creates a folder on the VFS.

Parameters

string $path

The parent folder.

string $name

The name of the new folder.

Throws

\Horde_Vfs_Exception

autocreatePath()

autocreatePath(string  $path) 

Automatically creates any necessary parent directories in the specified $path.

Parameters

string $path

The VFS path to autocreate.

Throws

\Horde_Vfs_Exception

isFolder()

isFolder(string  $path, string  $name) : boolean

Checks if a given item is a folder.

Parameters

string $path

The parent folder.

string $name

The item name.

Returns

boolean —

True if it is a folder, false otherwise.

deleteFolder()

deleteFolder(string  $path, string  $name, boolean  $recursive = false) 

Deletes a folder from the VFS.

Parameters

string $path

The parent folder.

string $name

The name of the folder to delete.

boolean $recursive

Force a recursive delete?

Throws

\Horde_Vfs_Exception

emptyFolder()

emptyFolder(string  $path) 

Recursively remove all files and subfolders from the given folder.

Parameters

string $path

The path of the folder to empty.

Throws

\Horde_Vfs_Exception

listFolder()

listFolder(string  $path, string|array  $filter = null, boolean  $dotfiles = true, boolean  $dironly = false, boolean  $recursive = false) : array

Returns a file list of the directory passed in.

Parameters

string $path

The path of the directory.

string|array $filter

Regular expression(s) to filter file/directory name on.

boolean $dotfiles

Show dotfiles?

boolean $dironly

Show only directories?

boolean $recursive

Return all directory levels recursively?

Throws

\Horde_Vfs_Exception

Returns

array —

File list.

getCurrentDirectory()

getCurrentDirectory() : string

Returns the current working directory on the SSH2 server.

Throws

\Horde_Vfs_Exception

Returns

string —

The current working directory.

changePermissions()

changePermissions(string  $path, string  $name, string  $permission) 

Changes permissions for an item on the VFS.

Parameters

string $path

The parent folder of the item.

string $name

The name of the item.

string $permission

The permission to set in octal notation.

Throws

\Horde_Vfs_Exception

getRequiredCredentials()

getRequiredCredentials() : array

Returns the list of additional credentials required, if any.

Returns

array —

Credential list.

getModifiablePermissions()

getModifiablePermissions() : array

Returns an array specifying what permissions are changeable for this VFS implementation.

Returns

array —

Changeable permisions.

getVFSSize()

getVFSSize() : integer

Returns the size of the VFS item.

Returns

integer —

The size, in bytes, of the VFS item.

setQuota()

setQuota(integer  $quota, integer  $metric = \Horde_Vfs::QUOTA_METRIC_BYTE) 

Sets the VFS quota limit.

Parameters

integer $quota

The limit to apply.

integer $metric

The metric to multiply the quota into.

setQuotaRoot()

setQuotaRoot(string  $dir) 

Sets the VFS quota root.

Parameters

string $dir

The root directory for the quota determination.

getQuota()

getQuota() : mixed

Get quota information (used/allocated), in bytes.

Throws

\Horde_Vfs_Exception

Returns

mixed —

An associative array.

'limit' = Maximum quota allowed
'usage' = Currently used portion of quota (in bytes)

readStream()

readStream(string  $path, string  $name) : resource

Open a stream to a file in the VFS.

Parameters

string $path

The pathname to the file.

string $name

The filename to retrieve.

Throws

\Horde_Vfs_Exception

Returns

resource —

The stream.

_connect()

_connect() 

Attempts to open a connection to the SSH2 server.

Throws

\Horde_Vfs_Exception

_checkDestination()

_checkDestination(string  $path, string  $dest) 

Checks whether a source and destination directory are the same.

Parameters

string $path

A source path.

string $dest

A destination path.

Throws

\Horce_Vfs_Exception

of both paths are the same.

_copyRecursive()

_copyRecursive(string  $path, string  $name, string  $dest) 

Recursively copies a directory through the backend.

Parameters

string $path

The path of the original file.

string $name

The name of the original file.

string $dest

The name of the destination directory.

Throws

\Horde_Vfs_Exception

_listFolder()

_listFolder(string  $path = '', string|array  $filter = null, boolean  $dotfiles = true, boolean  $dironly = false) : array

Returns an unsorted file list of the specified directory.

Parameters

string $path

The path of the directory.

string|array $filter

Regular expression(s) to filter file/directory name on.

boolean $dotfiles

Show dotfiles?

boolean $dironly

Show only directories?

Throws

\Horde_Vfs_Exception

Returns

array —

File list.

_filterMatch()

_filterMatch(string|array  $filter, string  $filename) : boolean

Returns whether or not a file or directory name matches an filter element.

Parameters

string|array $filter

Regular expression(s) to build the filter from.

string $filename

String containing the file/directory name to match.

Returns

boolean —

True on match, false on no match.

_checkQuotaWrite()

_checkQuotaWrite(string  $mode, string  $data, string  $path = null, string  $name = null) 

Checks the quota when preparing to write data.

Parameters

string $mode

Either 'string' or 'file'. If 'string', $data is the data to be written. If 'file', $data is the filename containing the data to be written.

string $data

Either the data or the filename to the data.

string $path

The path the file is located in.

string $name

The filename.

Throws

\Horde_Vfs_Exception

_getDataSize()

_getDataSize(string|resource  $data) : integer

Return the size of $data.

Parameters

string|resource $data

The data.

Returns

integer —

The data length.

_ensureSeekable()

_ensureSeekable(  $stream) 

Parameters

$stream

_checkQuotaDelete()

_checkQuotaDelete(string  $path, string  $name) 

Checks the quota when preparing to delete data.

Parameters

string $path

The path the file is located in.

string $name

The filename.

Throws

\Horde_Vfs_Exception

_getPath()

_getPath(string  $path, string  $name) : mixed

Returns the full path of an item.

Parameters

string $path

The directory of the item.

string $name

The name of the item.

Returns

mixed —

Full path to the file when $path is not empty and just $name when not set.

_setPath()

_setPath(string  $path) 

Changes the current directory on the server.

Parameters

string $path

The path to change to.

Throws

\Horde_Vfs_Exception

_parentDir()

_parentDir(string  $path) : string

Returns the parent directory of the specified path.

Parameters

string $path

The path to get the parent of.

Throws

\Horde_Vfs_Exception

Returns

string —

The parent directory.

_send()

_send(string  $local, string  $remote) : boolean

Sends local file to remote host.

This function exists because the ssh2_scp_send function doesn't seem to work on some hosts.

Parameters

string $local

Full path to the local file.

string $remote

Full path to the remote location.

Returns

boolean —

Success.

_recv()

_recv(string  $remote, string  $local) : boolean

Receives file from remote host.

This function exists because the ssh2_scp_recv function doesn't seem to work on some hosts.

Parameters

string $remote

Full path to the remote location.

string $local

Full path to the local file.

Returns

boolean —

Success.

_wrap()

_wrap(string  $remote) : string

Generate a stream wrapper file spec for a remote file path

Parameters

string $remote

Full path to the remote location

Returns

string —

A full stream wrapper path to the remote location