2014-07-25 53 views
3

感謝您對本主題感興趣。我在Laravel很新,我有一個小問題。也許這很容易! 我的Laravel中有一個SSH模塊,它的工作方式如下: 用戶使用Linux命令填充textarea元素。 該命令通過Ajax傳遞給位於「控制器」文件夾中的名爲getExecute()的方法 我希望此方法能夠返回我的SSH服務器的完整響應,但這不會發生。該方法返回的唯一內容是空格。Laravel - 返回SSH輸出

例如:我傳遞命令'ls -la',我的迴應是Linux找到的所有文件夾,就像在終端上一樣。 有人可以幫我嗎? 這裏是我的代碼:

public function getExecute() 
{ 
    if(\Request::ajax()): 

     $ssh_command = \Input::get('ssh_command'); 
     $ssh_response = null; 

     \SSH::run($ssh_command, function($line) 
     { 
      return $line.PHP_EOL; 
     }); 

    endif; 
} 

OBS:Ajax的連接進行了測試,它的確定! 謝謝!

+0

通常更希望你把解決方案,即使你是一個答案,作爲答案,並將其標記爲接受;) – Unnawut

+0

謝謝Unnawut,我會這樣做 – pedroroccon

回答

1

終於解決了!解決方案如下:

首先我創建了一個名爲$ output的變量,在我的類中。

private $output; 

然後我修改了我的方法是:

public function postExecute() 
{ 
    $ssh_command = \Input::get('ssh_command'); 
    $ssh_response = \SSH::run($ssh_command, function($line) 
    { 
     $this->output = $line.PHP_EOL; 
    }); 

    return $this->output; 
} 

我的方法是不是更阿賈克斯,但我希望所有我需要做的就是回滾到我像以前一樣的AJAX方法。謝謝大家!