运行在php5.5上的Phpseclib

时间:2014-11-02 20:44:11

标签: phpseclib

我的应用程序曾经在Amazon Linux服务器上运行PHP 5.4.34。我们升级到PHP 5.5.18以使用一些较新的库。现在phpseclib生成错误:  未定义的偏移量:第1073行/var/www/lib/ShellClient/phpseclib/Math/BigInteger.php中的5827

在这个应用程序中,我通过Net_SSH2登录并执行命令另一个Amazon Linux服务器。

我从Crypt_RSA和Net_SSH2开始 以下代码以无限循环方式发出通知:

$key = new \Crypt_RSA();
$key->loadKey(file_get_contents([PUBLIC_KEY]));
$ssh = new \Net_SSH2([IP_ADDRESS]], 22);
if(!$ssh->login([USERNAME]], $key)){           
    return false;               
}
$ssh->exec([COMMAND]]);
return true;

错误发生在函数_subtract中的BigInteger.php中,由Net_SSH2使用。

PHP注意:未定义的偏移量:第1073行的/var/www/lib/ShellClient/phpseclib/Math/BigInteger.php中的5827

    if ($carry) {
       for (; !$x_value[$i]; ++$i) { //1073
            $x_value[$i] = MATH_BIGINTEGER_MAX_DIGIT;
        }
    --$x_value[$i];
    }

在我的应用程序运行PHP 5.4.34之前,通过NetSSH2登录正常工作,没有任何警告。

2 个答案:

答案 0 :(得分:2)

此问题已在phpseclib 0.3.9中修复。

答案 1 :(得分:1)

我的猜测:你没有运行最新版本的phpseclib。最新版本是0.3.8。您描述的问题听起来像https://github.com/phpseclib/phpseclib/pull/331,自0.3.7以来一直在修复。