我正在尝试在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
答案 0 :(得分:0)
我已经解决了这个问题,但事实证明我的openssl库版本和标题版本不匹配,这导致phpseclib(laravel连接的方式)使用较慢的库,然后导致超时。作为临时修复,我修改了以下内容。
从第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);
}