无论如何我无法处理SSH连接错误

时间:2016-05-25 05:48:10

标签: php laravel ssh laravel-5

我试图处理RunTimeException以通过SSH连接VPS。

这里是通过SSH与VPS连接的代码。

$server_ip = Input::get('server_ip');
$password = Input::get('password');

$validator = Validator::make(
    ['server_ip' => $server_ip],
    ['server_ip' => 'ip|required|unique:servers'],
    ['password' => $password],
    ['password' => 'required|confirmed']
);

if(!$validator->fails())
{
    Config::set('remote.connections.production.host',$server_ip);
    Config::set('remote.connections.production.username','root');
    Config::set('remote.connections.production.password',$password);
    Config::set('remote.connections.production.root','/');

    $command = 'mysql --version';

    $connection_status = SSH::run($command, function($line)
    {
        $this->output = $line.PHP_EOL;
    });

    if(!$connection_status)
        return $this->output;
    else
        return view('dashboard.add_server');
}
else
    return "Validation failed...";

它写在Laravel。如果我遇到SSH连接错误,它应该将我重定向到名为add_server的视图。但是,我得到了Exception而不是重定向。这是我每次都得到的Errror而不是Redirection。

enter image description here

我想要的是,如果通过SSH与VPS有一些错误连接,它应该将我重定向到名为 add_server

的视图

让我知道代码有什么问题。

2 个答案:

答案 0 :(得分:3)

try
{
    $connection_status = SSH::run($command, function($line)
    {
        $this->output = $line.PHP_EOL;
    });

    if(!$connection_status)
        return $this->output;
}
catch(\RunTimeException $e)
{
    return view('dashboard.add_server');
}

答案 1 :(得分:1)

您应该使用try-catch

try
{
    $connection_status = SSH::run($command, function($line)
    {
        $this->output = $line.PHP_EOL;
    });

    if(!$connection_status)
        return $this->output;
}
catch(RunTimeException $e)
{
    return view('dashboard.add_server');
}

我不知道$connection_status是否应该在成功连接时获得错误值,但除此之外,它应该有效。