2014-05-19 40 views
2

我正在尝试在laravel中使用Remote ssh功能。我一直收到“超过60秒的最大执行时间”我知道我可以设置这个超时时间,但问题是不应该花这么长时间来做一个lslaravel SSH超出执行时间

我能够运行以下

exec("ssh -i /path/to/key [email protected] ls", $out, $code);

没有问题,所以这不是防火墙问题。

,但我无法运行此:

SSH::run(array(
      'ls' 
     ), function($line) { 
    echo $line . PHP_EOL; 
    }); 

我不知道为什么,这是挂在超时。

我也想知道是否有指定ssh -o选择的方式,因为对于一些我可能需要指定StrictHostKeyChecking=no

+0

你确定你的'应用程序/配置/ remote.php'是正确? – Sam

+0

是的,我已经尝试了一个键,没有密钥和密码 – arrowill12

回答

0

我已经解决了这一点,事实证明我的OpenSSL库版本和头版本没有匹配,这会导致phpseclib(laravel连接的方式)使用较慢的库,这会导致超时。作为临时修复,我修改了以下内容。

here:

开始行256

从这个:

 switch (true) { 
      case !isset($versions['Header']): 
      case !isset($versions['Library']): 
      case $versions['Header'] == $versions['Library']: 
       define('MATH_BIGINTEGER_OPENSSL_ENABLED', true); 
       break; 
      default: 
       define('MATH_BIGINTEGER_OPENSSL_DISABLE', true); 
     } 

这样:

 switch (true) { 
      case !isset($versions['Header']): 
      case !isset($versions['Library']): 
      case $versions['Header'] == $versions['Library']: 
       define('MATH_BIGINTEGER_OPENSSL_ENABLED', true); 
       break; 
      default: 
       define('MATH_BIGINTEGER_OPENSSL_ENABLE', true); 
     }