Поместите файл на сервер SFTP - PullRequest
0 голосов
/ 31 мая 2011

Я хотел бы поместить файл на сервер STFP после аутентификации с открытым ключом (не паролем). Ручной SFTP в командной строке работает. Прежде всего, я не могу использовать phpseclib. 'allow_url_fopen' = 1 в моем PHP.ini

stream_get_wrappers () дает мне: https, ftps, compress.zlib, compress.bzip2, php, файл, глобус, данные, http, ftp, phar, ssh2.shell, ssh2.exec, ssh2.tunnel, ssh2.scp , ssh2.sftp, застежка-молния

все работает (по порядку: ssh2_connect, ssh2_auth_pubkey_file, ssh2_sftp) но этот код не работает:

$sftp = ssh2_sftp($connection);
$dest = 'test.txt';
--> $sftpStream = fopen('ssh2.sftp://'.$sftp.$dest, 'w'); <---
PHP Warning:  fopen(ssh2.sftp://Resource id #32test.txt): failed to open stream: 

Есть идеи?

Спасибо S.

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

Простая ошибка: вы забыли / между $resource & $dest.Итак, это будет работать:

$sftpStream = fopen('ssh2.sftp://'.$sftp.'/'.$dest, 'w');

.., если у вас есть права на запись в корень вашей файловой системы.От вас может потребоваться указать полный путь к файлу, кроме выполнения cwd для ssh-соединения. Мне еще не удалось найти способ поместить файл в каталог «default» после подключения.

1 голос
/ 01 июня 2011

phpseclib использует fsockopen, который allow_url_fopen не должен производить. allow_url_fopen предназначен для таких вещей, как file () и file_get_contents (), а не для fsockopen ().

...