В настоящее время я борюсь с использованием встроенных библиотек SSH2 для PHP (под управлением версии 5.5). Я пытаюсь загрузить файл на SFTP-сервер, как указано в заголовке, однако я продолжаю получать сообщение об ошибке «потоковая операция не удалась».
После попытки отладки самого кода соединение работает, ресурсу sftp присваивается идентификатор правильно, однако при вызове fopen для записи файла непосредственно на удаленный сервер происходит сбой.
// open Live environment if we are not in dev
$connection = ssh2_connect($this->_settings['source_host'], 22);
$authSuccess = ssh2_auth_password($connection, $this- >_settings['source_user'], $this->_settings['source_password']);
$sftp = ssh2_sftp($connection);
И, наконец, вызов fopen():
if($operation == 'export') {
$handle = fopen("ssh2.sftp://".$sftp."/remotecopy/IN/".$filename, $mode);
}
Я добавил отладочные сообщения в свой собственный код, чтобы проверить, правильно ли используются данные из массива _settings, и это так, однако я не могу объяснить ошибку потока.
Message: fopen(): Unable to open ssh2.sftp://Resource id #173/PATH GOES HERE/filename.xxx on remote host
Message: fopen(ssh2.sftp://Resource id #173/PATH GOES HERE/filename.xxx): failed to open stream: operation failed
В качестве примечания файл не существует на удаленном хосте, но, насколько мне известно, режим «w» в PHP fopen() должен создать файл, если он не существует.
Я не могу использовать другую библиотеку PHP, так как весь наш проект использует встроенные библиотеки ssh2, и ответственный человек сказал мне не использовать ее, поскольку она отлично работает везде.
fopen
отключен на вашем сервере? - person Michael Doye   schedule 08.03.2015