我的应用程序曾经在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登录正常工作,没有任何警告。
答案 0 :(得分:2)
此问题已在phpseclib 0.3.9中修复。
答案 1 :(得分:1)
我的猜测:你没有运行最新版本的phpseclib。最新版本是0.3.8。您描述的问题听起来像https://github.com/phpseclib/phpseclib/pull/331,自0.3.7以来一直在修复。