Ostatnia aktualizacja:

3 września 2025

Opublikowano:

2 stycznia 2017

Połączenie z SFTP z poziomu PHP

Połączenie z SFTP z poziomu PHP

W dzisiejszym artykule chcę opisać jak rozwiązałem problem, który napotkałem przy jednym z zadań podczas pracy nad projektem. Część zadania, która sprawiła mi opisywany problem, była to komunikacja z serwerami Amazona. System, który wdrażaliśmy niestety nie posiadał API, jedynie wymianę plików EDI, poprzez wskazane przez Amazon serwery. Do wyboru mieliśmy AS2 (wszystko płatne, nie rozwiązujące problemu automatyzacji całości z poziomu PHP) oraz SFTP, które wybraliśmy.

W tym artykule dowiesz się:
  1. Czym jest SFTP?
  2. Jak używać PuTTY oraz PSFTP.exe?
  3. Wykonywanie w PHP

Czym jest SFTP?

FTP czyli File Transfer Protocol jest to protokół komunikacyjny, który umożliwia wymianę danych między serwerem a klientem, lecz niestety żadne dane nie są szyfrowane, co jest mało bezpieczną opcją. SFTP(ang. SSH File Transfer Protocol) wykorzystuje szyfrowanie kluczem szyfrującym. Wdrażałem to w systemie stworzonym na Symfony 2, próbowałem wykorzystać kilka metod ze „stacka” i innych stron, lecz niestety zero skutku. Tak o to stworzyłem krótki tutorial, jak rozwiązać taki problem.

Jak używać PuTTY oraz PSFTP.exe?

Bezpłatna aplikacja kliencka emulująca terminal tekstowy do łączenia się z serwerem wykorzystując między innymi protokoły SSH. Posiada bardzo prosty interfejs:

Interfejs Putty

Na pierwszej stronie definiujemy sesje. Wypełniając adres serwera oraz protokół – w naszym przypadku SSH. W Saved Sessions wpisujemy nazwę sesji naszego połączenia i dajemy Save (przy zmianie na innych kartach pamiętajcie, aby wrócić na kartę Session oraz zapisać ponownie zmiany – mało intuicyjne).

Logowanie Putty

Kolejnym interesującym nas elementem interfejsu jest Connection->Data. gdzie musimy wpisać login naszego konta klienta do serwera – nie jest to wymagane, można to wykonać później z poziomu PHP, ale może być wpisany również tutaj.

Konfiguracja Putty

Connection->SSH->Kex dodajemy „fingerprint” naszego klucza(nie wiem czy zawsze jest to wymagane, ale w moim przypadku bez tego nie dochodziło do pełnej autentykacji. Jeśli nie wiesz skąd wyciągnąć to ze swojego klucza zajrzyj tutaj. Natomiast w Connection->SSH->Auth podajemy ścieżke do naszego klucza prywatnego. W tym momencie zapisujemy sesję na karcie Sessions i PuTTy mamy w pełni skonfigurowane. W tym momencie musimy stworzyć zmienną środowiskową ‘psftp’ do pliku psftp.exe (zakładam że tego tłumaczyć nie trzeba ?)

SSH Putty

Wykonywanie w PHP

Klasa ta ma za zadanie wysłać od nas z konkretnej ścieżki web/files/ pliku o nazwie przekazanej jako argument do metody, do katalogu upload/ na zdalnym serwerze SFTP. Aby tego dokonać tworzymy tymczasowy plik .bat, w której umieszczamy rozkaz put web/files/nazwapliku.txt upload/nazwapliku.txt. Co spowoduje przekopiowanie pliku. Plik bat potrzebny jest nam do następnego kroku jakim jest wywołanie procesu: new Process(„psftp -load nazwa.sesji.putty -l login.do.serwera -b c:\project\web\nazwapliku.bat”). Zmienna środowiskowa otwiera konsolę psftp do łączenia się z określoną sesją zdefiniowaną w PuTTy za pomocą parametru -load, tutaj podajemy również login z parametrem -l, oraz nasz stworzony plik .bat który podczas wykonywania procesu wykona określoną instrukcję.

Przykładowy kod

Akurat w tym przypadku dalej robimy porządek z plikami, przenosimy wysłane do backup’u a plik .bat który jest już zbędny zostaje usunięty. Listę instrukcji do PSFTP które można zamieścić w pliku .bat znajdziecie tutaj . Rozwiązanie troszkę „naokoło” ale działa, co jest najważniejsze. Mam nadzieję, że ktoś, kto znajdzie się w opresji, znajdzie ukojenie dzięki temu krótkiemu artykułowi.

Ostatnia aktualizacja:

3 września 2025

Opublikowano:

2 stycznia 2017

W tym artykule dowiesz się:
  1. Czym jest SFTP?
  2. Jak używać PuTTY oraz PSFTP.exe?
  3. Wykonywanie w PHP

Polecane artykuły

3 rzeczy, których nie wiesz o briefie sklepu internetowego

Przez kilkanaście lat na biurku miałem przynajmniej kilkaset briefów przedwdrożeniowych. Jedne były lepsze, drugie gorsze, trzecie zrobione za karę. I jak myślę o tym, że przecież wdrożenie e-Commerce to projekt strategiczny, to trochę się nawet dziwię. W tym filmie opowiem Ci o trzech rzeczach, które są konsekwencją dobrze przygotowanego briefu. Dowiesz się: ✅ dlaczego brief to wspólna mapa drogowa dla całej organizacji, ✅ jak wpływa na realność wycen i budżetu projektu, ✅ w jaki sposób chroni Cię przed chaosem i niepotrzebnymi zmianami w trakcie wdrożenia. Jeżeli myślisz o nowym sklepie internetowym albo planujesz redesign, to nagranie pozwoli Ci uniknąć kosztownych pułapek i podejść do projektu strategicznie.

Czytaj więcej
Testy regresji

Testy regresji w e-Commerce

Głównym celem działania serwisów e-Commercowych jest prawidłowe i przyjazne przeprowadzanie użytkownika przez proces zakupowy: od momentu zaprezentowania produktu, wyboru konkretnego produktu, aż do płatności zakończonej sukcesem. To właśnie problemy w tym zakresie i przeszkody na etapie przejścia tej ścieżki, mogą zniechęcić klienta, który finalnie może wyjść z naszego sklepu i wybrać inny. Testy regresji – […]

Czytaj więcej
e-commerce b2b obawy

E-Commerce B2B – Rozwiewamy Twoje obawy

Wdrożenie e-Commerce B2B może budzić wiele niepewności. Nic w tym dziwnego, w końcu jest to projekt, który wymaga od przedsiębiorcy przemodelowania jego biznesu i wejścia ze swoją działalnością do całkiem nowej przestrzeni. Dlatego bardzo często firmy handlowe działające w sektorze B2B zwlekają z rozpoczęciem sprzedaży elektronicznej, nie chcą porywać się z motyką na słońce. Przecież […]

Czytaj więcej
shopware vs magento

Shopware vs Magento – porównanie platform

Co wybrać – Shopware czy Magento? Która platforma jest lepsza? Która tańsza? Która jest królem dużych e-Commerce’ów, a która pretendentem do tronu? Takich rozmów w branży jest coraz więcej, czas więc rozwinąć temat. Dlaczego porównujemy Shopware vs Magento? W Satisfly pracujemy przede wszystkim ze średnimi i dużymi klientami, dla których rozwiązania abonamentowe już nie wystarczają […]

Czytaj więcej

Skontaktuj się z nami

Opowiedz nam o swoich ambicjach związanych z e-commerce i pozwól nam wspólnie je zrealizować.

Skontaktuj się z nami
Expert Consultation

Darmowa konsultacja