laravel SSH超时执行


laravel SSH exceeding execution time

我正在尝试使用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

我已经解决了这个问题,事实证明我的openssl库版本和头版本不匹配,这导致phpseclib(laravel连接的方式)使用较慢的库,然后导致超时。作为临时修复,我修改了以下内容:

:

从第256行开始

from this:

       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);
        }