Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SFTP] Upload pliku
Toshikatsu
post 28.12.2017, 14:42:13
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 3
Dołączył: 18.10.2017

Ostrzeżenie: (0%)
-----


Potrzebuje napisać wysyłkę pliku na zewnętrzny serwer przez SFTP. Mam sporą liczbę plików, w różnym czasie, z przeróżnymi nazwami itp. itd.
W celu zautomatyzowania tego napisałem funkcję która wykorzystywała rozszerzenie SSH2.

Na localhoście wszystko pięknie hulało, jednak na serwerze "produkcyjnym" nie mam dostępu do rozszerzeń i takich tam, a nie ma tam tego rozszerzenia, w związku z czym wyskakuje błąd "Call to undefined function ssh2_connect()".

Jakaś porada z czego skorzystać, żeby móc spokojnie wysyłać pliku bez zbędnej ingerencji w serwer i jego ustawienia?
Go to the top of the page
+Quote Post
Pyton_000
post 28.12.2017, 15:04:28
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Może to: https://stackoverflow.com/a/18211889
Go to the top of the page
+Quote Post
Toshikatsu
post 18.01.2018, 12:24:30
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 3
Dołączył: 18.10.2017

Ostrzeżenie: (0%)
-----


Ok, to rozwiązanie wydaje się dużo prostsze, łatwiejsze i przyjemniejsze.
Aczkolwiek mam pewien problem, który nie do końca rozumiem.

Mam funkcję do wysyłki plików:
  1. public function sftp($host, $login, $password, $serverFilePath, $filePath, $fileNames) {
  2. $sftp = new \phpseclib\Net\SFTP($host);
  3.  
  4. if (!$sftp->login($login, $password)) {
  5. print('['.date('Y-m-d H:i:s')."] Błąd uwierzytelniania - {$login}\n");
  6. }
  7.  
  8. $sftp->chdir($serverFilePath);
  9.  
  10. foreach($fileNames as $fileName)
  11. {
  12. $sftp->put($fileName, $filePath.$fileName, NET_SFTP_LOCAL_FILE))
  13.  
  14. }
  15.  
  16. }


Połączenie jest wykonane, logowanie też bez problemu, jednak plik jaki powstaje na serwerze posiada w treści ścieżkę podaną w drugim argumencie.
Z tego co się dowiedziałem i z tego co rozumiem, 3 argument powinien powodować, że wysyłany jest plik z podanej ścieżki, a nie string umieszczony jako 2 argument.
Ktoś coś? :V

EDIT:
Głupota, ale jednak:
NET_SFTP_LOCAL_FILE mimo polecania na wszelkich możliwych poradnikach, tak właściwie nie jest zdefiniowany w phpspeclib.
Rozwiązanie to zamienić 'NET_SFTP_LOCAL_FILE' na 1 biggrin.gif

Btw. Dzięki za polecenie


Ten post edytował Toshikatsu 18.01.2018, 13:21:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 20:07