phanan / remote
Bringing the Remote library back to Laravel 5.
Installs: 29 478
Dependents: 1
Suggesters: 0
Security: 0
Stars: 31
Watchers: 4
Forks: 4
Open Issues: 4
Requires
- php: >=5.4.0
- phpseclib/phpseclib: 2.0.*
Requires (Dev)
- laravel/framework: ~5.1
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2022-02-14 15:06:04 UTC
README
Remote is a simple package that brings the ability to do remote connections back into Laravel 5. This package makes use of the awesome phpseclib behind the scene.
Requirements
- PHP >= 5.4
- Anything required by phpseclib
Installation
First, require phanan/remote
into your composer.json
and run composer update
.
"require": {
"laravel/framework": "5.1.*",
"phanan/remote": "2.0.*"
},
After the package is downloaded, open config/app.php
and add its service provider class:
'providers' => [ /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, PhanAn\Remote\RemoteServiceProvider::class, ],
Now if you need a sample configuration file – you don’t actually, see Usage for array-based login:
php artisan vendor:publish
Look for a remote.php
file under your config
directory and modify it to fit your needs.
Usage
Using Remote
is dead simple: Just initialize a PhanAn\Remote\Remote
object, say $connection
. The constructor accepts two arguments, none of which is required:
$env
(string|array
): The key of the remote connection array found inconfig/remote.php
if a string, or the configuration array itself if an array. Defaults to an empty string, in which case the default connection will be used.$auto_login
(boolean
): Whether or not the connection should attempt to log into the remote server upon class construction. Defaults totrue
.
Here's where the magic happens. Like, literally. Remote
makes use of the magic function __call()
to pass all unrecognized methods to the phpseclib\Net\SFTP
object underneath. Which means, you can call any phpseclib\Net\SFTP
method directly on a Remote
object:
<?php namespace App\Http\Controllers; use Exception; use PhanAn\Remote\Remote; class RemoteController extends Controller { public function getConnect() { $connection = new Remote(); // Of course you can specify a configured environment name, like this // $connection = new Remote('staging'); // // Or even an array, like this // $connection = new Remote([ // 'host' => '::1', // 'port' => 22, // 'username' => 'doge', // 'password' => 'SoIPv6MuchModern', // ]); // All methods below are from \phpseclib\Net\SFTP, not Remote itself! Magic! // Create a file with some dummy content $connection->put('doge', 'Much remote so convenience wow.'); // Execute a command $dir_content = $connection->exec('ls -a'); // Get some standard errors if ($error = $connection->getStdError()) { throw new Exception("Houston, we have a problem: $error"); } } }
Check phpseclib's official SFTP Feature List for details of what you can do.
License
MIT © Phan An