- Flysystem >= 1.0.0
- flysystem-sftp >= 1.0.0
Using composer:
composer require falc/flysystem-sftp-symlink-plugin
Or add it manually:
{
"require": {
"falc/flysystem-sftp-symlink-plugin": "1.*"
}
}
This plugin requires a Filesystem
instance using the Sftp adapter.
use Falc\Flysystem\Plugin\Symlink\Sftp as SftpSymlinkPlugin;
use League\Flysystem\Adapter\Sftp as SftpAdapter;
use League\Flysystem\Filesystem;
$filesystem = new Filesystem(new SftpAdapter(array(
'host' => 'example.com',
'port' => 22,
'username' => 'username',
'password' => 'password',
'privateKey' => 'path/to/or/contents/of/privatekey',
'root' => '/',
'timeout' => 10
)));
Use symlink($target, $symlink)
to create a symlink.
$filesystem->addPlugin(new SftpSymlinkPlugin\Symlink());
$success = $filesystem->symlink('/tmp/some/target', '/tmp/symlink');
Use deleteSymlink($symlink)
to delete a symlink.
$filesystem->addPlugin(new SftpSymlinkPlugin\DeleteSymlink());
$success = $filesystem->deleteSymlink('/tmp/symlink');
Use isSymlink($filename)
to check if a file exists and is a symlink.
$filesystem->addPlugin(new SftpSymlinkPlugin\IsSymlink());
$isSymlink = $filesystem->isSymlink('/tmp/symlink');
The above examples show how to create symlinks using /
as root and full paths. But it is possible to use relative paths too.
use Falc\Flysystem\Plugin\Symlink\Sftp as SftpSymlinkPlugin;
use League\Flysystem\Adapter\Sftp as SftpAdapter;
use League\Flysystem\Filesystem;
$filesystem = new Filesystem(new SftpAdapter(array(
'host' => 'example.com',
'port' => 22,
'username' => 'username',
'password' => 'password',
'privateKey' => 'path/to/or/contents/of/privatekey',
'root' => '/home/falc',
'timeout' => 10
)));
$filesystem->addPlugin(new SftpSymlinkPlugin\Symlink());
$filesystem->addPlugin(new SftpSymlinkPlugin\IsSymlink());
$filesystem->addPlugin(new SftpSymlinkPlugin\DeleteSymlink());
// Result: /home/falc/flytest -> /home/falc/projects/cli/flytest
$filesystem->symlink('projects/cli/flytest', 'flytest');
// It is possible to check it or delete it in the same way:
$isSymlink = $filesystem->isSymlink('flytest');
$filesystem->deleteSymlink('flytest');