phpseclib не показывает ошибок и не удается войти в HEROKU

Я использую phpseclib для передачи файла через SFTP на сервер. На моем локальном компьютере файл отлично передается на сервер, но на Heroku он вообще не работает, и каждый раз происходит сбой входа в систему. Я не уверен, почему это происходит.

Вот кусок кода.

 $sftp = new \phpseclib\Net\SFTP(getenv('INSTRUM_SERVER'),22222);
        if (!$sftp->login(getenv('INSTRUM_USERNAME'), getenv('INSTRUM_PASSWORD'))) {
            var_dump($sftp->getSFTPErrors());
            exit('Login Failed');
        }

«var_dump» возвращает пустой массив, поэтому я не уверен, почему не удается войти в систему.

Я использую композитор для загрузки phpseclib от поставщика.


person Masnad Nihit    schedule 15.01.2018    source источник
comment
Пробовали ли вы сбрасывать разные переменные среды, чтобы убедиться, что они верны?   -  person Nico Haase    schedule 15.01.2018
comment
@NicoHaase Да, они все точны и видны, когда я их сбрасываю   -  person Masnad Nihit    schedule 15.01.2018
comment
@NicoHaase Я даже удалил get env и начал использовать то, что есть.   -  person Masnad Nihit    schedule 15.01.2018
comment
Похоже, вы разместили это на github.com/phpseclib/phpseclib/issues/1240 . ПОМОЩЬ.   -  person neubert    schedule 15.01.2018
comment
@neubert да, я сделал, чтобы увидеть, возможно ли получить от них ответ хотя бы. Я опубликую правильный ответ здесь, если получу ответ.   -  person Masnad Nihit    schedule 16.01.2018


Ответы (1)


Я использую phpseclib вот так, и он отлично работает:

private $sftp = NULL;

private function create_sftp_object( $host, $port = 22, $timeout = 10 )
{
    $path = APPPATH . 'libraries/phpseclib';

    set_include_path( get_include_path() . PATH_SEPARATOR . $path );

    include_once( APPPATH . 'Net/SFTP.php');

    return new Net_SFTP( $host, $port, $timeout );
}

public function index()
{
    $this->sftp = create_sftp_object( 
        getenv('INSTRUM_SERVER'), 
        22222, 
        6 
    );

    if( $this->sftp->login( getenv('INSTRUM_USERNAME'), getenv('INSTRUM_PASSWORD') ){
        echo 'Login successful';
    }else{
        echo 'Login not successful';
    }
}

Это немного отличается от вашего кода. Как видите, у меня есть phpseclib в каталоге моих библиотек. Попробуйте и посмотрите, работает ли это для вас.

person Brian Gottier    schedule 15.01.2018
comment
Я пробовал, к сожалению, не решает проблему, что еще хуже, ошибки нет. - person Masnad Nihit; 16.01.2018
comment
Я ничего не знаю о Кероку, но я предполагаю, что они могут блокировать порт. Вы должны хотя бы связаться с ними и спросить. - person Brian Gottier; 16.01.2018