2014-11-02 1 views
0

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

В этом приложении я Войти через 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 Примечание: Undefined смещение: 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 работал нормально, без каких-либо предупреждений.

ответ

1

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