phpseclib超过最大执行时间

时间:2014-05-20 16:25:04

标签: php ssh phpseclib

我目前正在使用laravel(使用phpseclib)进行我的项目,并且遇到了ssh连接问题,现在收到错误Maximum execution time of 60 seconds exceeded我知道这个值可以扩展但我不应该为了运行一个简单的ls命令。

这个班级phpseclib/Math/BigInteger.php

似乎失败了

我已尝试phpseclib documentation中的每个示例,我仍然遇到相同的错误。

我也尝试过使用exec("ssh -i /path/to/key user@host ls", $out, $code);我能够很好地连接。

我还测试fsock并且没有返回任何错误,所以一切看起来都不错。

  $fsock = fsockopen('server', 22);
  echo fgets($fsock, 1024);

关于为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,但事实证明我的openssl库版本与标题版本不匹配,这导致phpseclib使用较慢的库,然后导致超时。作为临时修复,我修改了以下内容。

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