Phpseclib работает на php5.5

Мое приложение раньше нормально работало на PHP 5.4.34 на сервере Amazon Linux. Мы обновили до PHP 5.5.18, чтобы использовать некоторые из более новых библиотек. Теперь phpseclib генерирует ошибку: неопределенное смещение: 5827 в /var/www/lib/ShellClient/phpseclib/Math/BigInteger.php в строке 1073

В этом приложении я вхожу через 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;

Ошибка в BigInteger.php в функции _subtract, которая используется Net_SSH2).

Примечание PHP: Неопределенное смещение: 5827 в строке /var/www/lib/ShellClient/phpseclib/Math/BigInteger.php в строке 1073.

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

До того, как мое приложение работало на PHP 5.4.34, вход в систему через NetSSH2 работал без каких-либо предупреждений.

2 ответа

Решение

Мое предположение: у вас не установлена ​​последняя версия phpseclib. Последняя версия 0.3.8. Проблема, которую вы описываете, звучит как https://github.com/phpseclib/phpseclib/pull/331 которая была исправлена ​​с 0.3.7.

Эта проблема была исправлена ​​в phpseclib 0.3.9.

Другие вопросы по тегам