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