Почему SFTP через PHP не работает, а FileZilla успешно работает на моем компьютере с Windows 8.1?

В PHP я даже не могу заставить работать SFTP-соединение. Я пытался использовать встроенную функциональность SFTP (ssh_connect), и мне не удалось подключиться. Я также пытался использовать phpseclib, но тоже не получается. Ни одна из моих вышеупомянутых попыток не предоставила много информации о журнале.

Родной код:

if (!function_exists('ssh2_connect')) { 
    echo "dll not loaded properly"; //never see this, so I know it works
    return false;
}
$connection = ssh2_connect('sftp.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

код библиотеки phpseclib:

include('Net/SFTP.php');

$sftp = new Net_SFTP('sftp.example.com');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

Я также попытался отследить все транзакции через Fiddler, чтобы увидеть, вижу ли я, по крайней мере, установленное соединение, и я вижу ошибку в браузере (ниже), которая из-за поиска в Google может означать, что соединение с сервером было установлено, но нет откликов.

[Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 17139 bytes. 

Почему я могу подключиться к URL-адресу с именем пользователя и паролем через FIleZilla, но не из php? Нужны ли мне другие библиотеки DLL в папке /ext PHP (например, php_openssl.dll и т. д.)?

Спасибо, Шон


person Sean Charles    schedule 12.07.2015    source источник
comment
я использую phpseclib для отладки: добавьте print_r($sftp->getSFTPErrors()); перед выходом   -  person    schedule 12.07.2015
comment
Я не пробовал getSFTPErrors(), но пытался отобразить $sftp->getLog(). Я пробовал getSFTPErrors() и, как и getLog(), ничего не возвращает.   -  person Sean Charles    schedule 12.07.2015
comment
полная регулярная проверка ошибок включена?   -  person    schedule 12.07.2015
comment
Хороший вопрос. Я не уверен. В верхней части моей функции у меня есть это: define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX); // NET_SFTP_LOG_COMPLEX или NET_SFTP_LOG_SIMPLE   -  person Sean Charles    schedule 12.07.2015
comment
я думал примерно так: ini_set('display_errors', 'On'); ini_set('html_errors', 0); error_reporting(-1);   -  person    schedule 12.07.2015
comment
Спасибо @Дагон. По крайней мере, теперь я получил несколько сообщений об ошибках. Хотя я не совсем уверен, как их исправить. Непредвиденная ошибка PHP [Не найдено совместимых алгоритмов шифрования между сервером и клиентом], серьезность [1024] в [C:\dev\php\workspace\phpseclib\Net\SSH2.php, строка 1266] Любые идеи о том, как включить соответствующий алгоритм шифрования?   -  person Sean Charles    schedule 14.07.2015
comment
Я считаю, что это означает, что файлы не включены должным образом.   -  person    schedule 14.07.2015
comment
Да, пока это то, что обнаружило мое исследование Google. В частности, были сообщения о том, что файл /Crypt/RC4.php не включен должным образом, но я включил его, и у меня возникла та же проблема. Я продолжу копать и посмотрю, смогу ли я вернуться и дать исправление для будущих поколений.   -  person Sean Charles    schedule 14.07.2015
comment
@Dagon, я использую PHP версии 5.3.3, и, судя по тому, что я могу сказать о документации phpseclib, я могу использовать библиотеку как есть. Поэтому я включил некоторые файлы библиотеки вверху, например: require_once($GLOBALS['codedir'] . /phpseclib/Crypt/RC4.php); Следует ли включать файлы каким-то другим образом?   -  person Sean Charles    schedule 14.07.2015
comment
попробуйте добавить set_include_pat перед включением. мой: set_include_path(get_include_path() . PATH_SEPARATOR . '/var/virtual/customers/XXX/html/update/phpseclib'); include ('/var/virtual/customers/XXX/html/update/phpseclib/Net/SFTP.php');   -  person    schedule 14.07.2015
comment
Круто, я смог подключить его, а затем загрузить файл. Я не уверен, как отдать вам должное за ваши комбинированные ответы (дайте мне знать, если есть способ), но спасибо за всю помощь!   -  person Sean Charles    schedule 14.07.2015
comment
рад, что это сработало, просто повезло, что я использовал эту библиотеку для проекта - вы можете написать ответ (даже краткий) для любого, кто ищет   -  person    schedule 14.07.2015
comment
@Dagon У меня такая же проблема. Но установка пути к включаемым файлам у меня не работает. Итак, не могли бы вы направить меня?   -  person Anandharaman Buvaneswaran    schedule 31.12.2016