Natknąłem się na wiele skryptów PHP dla internetowych klientów FTP. Muszę zaimplementować klienta SFTP jako aplikację internetową w PHP. Czy PHP obsługuje SFTP? Nie mogłem znaleźć próbek. Czy ktoś może mi w tym pomóc?Jak SFTP z PHP?
Odpowiedz
PHP ma owijacze strumienia ssh2 (domyślnie wyłączone), więc możesz używać połączeń sftp z dowolną funkcją obsługującą obwoluty strumieniowe za pomocą protokołu ssh2.sftp://
dla protokołu, np.
file_get_contents('ssh2.sftp://user:[email protected]:22/path/to/filename');
lub - gdy również używając ssh2 extension
$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');
Zobacz http://php.net/manual/en/wrappers.ssh2.php
Na marginesie, jest też dość grono pytań dotyczących tego tematu już:
Funkcje ssh2 nie są bardzo dobre. Trudne w użyciu i trudniejsze do zainstalowania, używanie ich gwarantuje, że twój kod ma zerową przenośność. Moje zalecenie byłoby użyć phpseclib, a pure PHP SFTP implementation.
obsługuje tylko SFTP v3 – Blacksonic
@indranama czy oznaczyłbyś to jako poprawną odpowiedź, aby przyszli użytkownicy nie musieli czytać komentarzy, aby znaleźć najlepsze rozwiązanie? –
Wykonałem pełne wykupienie i napisałem klasę, która tworzy plik wsadowy, a następnie wywołuje sftp
poprzez wywołanie system
. Nie jest to najładniejszy (lub najszybszy) sposób, ale działa na to, czego potrzebuję i nie wymagał instalacji dodatkowych bibliotek ani rozszerzeń w PHP.
może być droga, jeśli nie chcesz korzystać z ssh2
rozszerzeń
powiązany wątek, który pomógł mi: https://groups.google.com/forum/#!topic/comp.security.ssh/_55TdDdUTCw – Quamis
I stwierdził, że „phpseclib” powinno pomóc w tym (SFTP i wiele innych funkcji). http://phpseclib.sourceforge.net/
umieścić plik na serwerze, po prostu zadzwoń (przykład kod z 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);
repozytorium git jest tutaj: https://github.com/phpseclib/phpseclib/tree/master/phpseclib – relipse
Jeśli można użyć rozszerzenie SSH2 dla PHP Proponuję checking out to:
Monsta FTP oferuje SFTP/SCP, jak również zwykły FTP za pośrednictwem klienta internetowego, który można pobrać bezpłatnie. (zrzeczenie się: jestem zaangażowany w ten projekt)
jak to się dzieje? czy Monsta jest biblioteką PHP do użytku deweloperów? – Brian
- 1. Jak pobrać plik z SFTP używając PHP?
- 2. Pobieranie PHP ze zdalnego serwera przez sftp
- 3. Linux jak uruchomić "sftp-server"?
- 4. Jak używać SFTP w C#
- 5. Jak korzystać z sftp z modułu bazy danych MS Access?
- 6. Biblioteki SFTP dla .NET
- 7. Jak zaimplementować program rekurencyjny w sftp
- 8. Kopiowanie pliku w sftp z biblioteką jsch
- 9. rubin błąd SFTP
- 10. Moduł Python SSH/SFTP?
- 11. Jak usunąć plik z serwera SFTP programistycznie za pomocą SharpSSH?
- 12. Jak przesłać plik binarny w SFTP?
- 13. Jak mogę skopiować foldery za pomocą sftp?
- 14. Jak przesłać plik przez SFTP w java?
- 15. Ustawić umask na koncie sftp?
- 16. połączenie serwera paramos sftp zrzucone
- 17. Przesyłanie plików za pomocą protokołu SFTP
- 18. Przesyłanie plików SFTP za pomocą Java JSch
- 19. Czytanie pliku z serwera SFTP przy użyciu Node.js i SSH2
- 20. Poszukuję biblioteki nowoczesnej SFTP java, nie jsch
- 21. Visual Studio Publish Website Using SCP/SFTP
- 22. "Put" w SFTP przy użyciu PAramiko
- 23. Grunt - obejrzyj plik i SFTP po zmianie
- 24. Przesyłanie do instancji EC2 CentOS przy użyciu SublimeText SFTP
- 25. Co oznacza opcja -b zrobić w SFTP
- 26. jscape sftp przesyłanie plików zachowując uprawnienia
- 27. Obsługa SFTP dla curl na OSX
- 28. Jak skompresować JSON z PHP?
- 29. Jak podłączyć JMS z PHP?
- 30. Jak skonfigurować Beanstalkd z PHP
zarówno file_get_contents, jak i file_put_contents działają świetnie. nigdy nie wiedziałem, że pracują z sftp i jest to o wiele łatwiejsze niż używanie wbudowanych rzeczy sftp. Dzięki! – jbrahy
Nawet jeśli używasz file_get_contents(), nadal potrzebujesz rozszerzenia ssh2 (afaik). – StanE