ftp из windows в linux через php [duplicate]

Кажется, что это редкий случай, но вот что со мной произошло:

Мы использовали @Inject вместо @Autowired, который является стандартом javaee, поддерживаемым Spring. В каждом месте он работал нормально, а бобы вводили правильно, а не в одно место. Инъекция компонента выглядит одинаково

@Inject
Calculator myCalculator

Наконец, мы обнаружили, что ошибка заключалась в том, что мы (фактически, функция автозавершения Eclipse) импортировали com.opensymphony.xwork2.Inject вместо javax.inject.Inject!

Итак, чтобы суммировать, убедитесь, что ваши аннотации (@Autowired, @Inject, @Service, ...) имеют правильные пакеты!

71
задан indranama 14 January 2011 в 10:16
поделиться

4 ответа

PHP имеет оболочку потока ssh2 (по умолчанию отключена), поэтому вы можете использовать соединения sftp с любой функцией, поддерживающей обтекатели потоков, используя ssh2.sftp:// для протокола, например

file_get_contents('ssh2.sftp://user:pass@example.com:22/path/to/filename');

или - когда также используя расширение ssh2

$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);
$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');

См. http://php.net/manual/en/wrappers.ssh2.php

На стороне примечания также есть довольно много вопросов по этой теме:

64
ответ дан Community 22 August 2018 в 11:58
поделиться
  • 1
    file_get_contents и file_put_contents работают потрясающе. никогда не знал, что они работали с sftp, и это намного проще, чем использование встроенного sftp-материала. Благодаря! – jbrahy 11 March 2015 в 23:53
  • 2
    Даже при использовании file_get_contents () вам все равно нужно расширение ssh2 (afaik). – StanE 26 January 2016 в 06:28

Я выполнил полное копирование и написал класс, который создает пакетный файл, а затем вызывает sftp через вызов system. Не самый приятный (или самый быстрый) способ сделать это, но он работает для того, что мне нужно, и не требовал установки дополнительных библиотек или расширений в PHP.

Может быть, Не хотите использовать расширения ssh2

0
ответ дан DaveyBoy 22 August 2018 в 11:58
поделиться

Я обнаружил, что «phpseclib» должен помочь вам в этом (SFTP и многие другие функции). http://phpseclib.sourceforge.net/

Чтобы поместить файл на сервер, просто позвоните (пример кода из http://phpseclib.sourceforge.net /sftp/examples.html#put)

<?php
include('Net/SFTP.php');

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

// puts a three-byte file named filename.remote on the SFTP server
$sftp->put('filename.remote', 'xxx');
// puts an x-byte file named filename.remote on the SFTP server,
// where x is the size of filename.local
$sftp->put('filename.remote', 'filename.local', NET_SFTP_LOCAL_FILE);
23
ответ дан Prut Udomwattawee 22 August 2018 в 11:58
поделиться

Функции ssh2 не очень хороши. Трудно использовать и еще труднее установить, использование их гарантирует, что ваш код имеет нулевую мобильность. Моя рекомендация заключалась бы в использовании phpseclib, чистой реализации PHP SFTP .

33
ответ дан Yahel 22 August 2018 в 11:58
поделиться
  • 1
    поддерживает только SFTP v3 – Blacksonic 29 May 2013 в 15:07
  • 2
    @indranama вы отметили бы это как правильный ответ, чтобы будущим пользователям не приходилось читать комментарии, чтобы найти, что сработало лучше всего для вас? – Fi Horan 30 June 2017 в 14:14
Другие вопросы по тегам:

Похожие вопросы: