laravel SSH超过执行时间

时间:2014-05-19 21:14:05

标签: php laravel laravel-4

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

我可以运行以下

exec("ssh -i /path/to/key user@host ls", $out, $code);

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

但我无法执行此操作:

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

我不确定为什么这会挂起并超时。

我还想知道是否有办法指定ssh -o选项,因为对于某些人我可能需要指定StrictHostKeyChecking=no

1 个答案:

答案 0 :(得分: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);
        }