--spoiler--
SFTP ile dosya transfer işlemleri ve PHPSecLib
phpseclib matematik, şifreleme, network gibi konularda oldukça faydalı araçlar içeren bir kütüphane yada kütüphaneler diyebiliriz. Ben burada SFTP ile dosya transferinde kullanılabilecek Net_SFTP kütüphanesine deyinmek istiyorum. Bu kütüphane ile PHP üzerinden SFTP ile dosya transfer işlemleri gerçekleştirebiliriz. Anlatıma geçmeden önce konuyla alakalı bir kaç tanımı açıklayalım.
SSH Nedir? SSH ingilizce açılımı "Secure Shell" Türkçe ifadesiyle "Güvenli Kabuk" demektir. Bu protokol ağ üzerinden başka bilgisayarlara bağlanmak, bağlandığı bilgisayar üzerinde komut çalıştırmak, dosya transferi yapmak gibi işlemlerde kullanılır. Tüm bu işlemleri güvenli bir şekilde gerçekleştirir. Detaylı bilgi için buraya bakabilirsiniz.
SFTP Nedir? SFTP'de FTP ile benzer şekilde dosya transferinde kullanılan bir protokoldür. Ancak dosya transferinin güvenli bir şekilde gerçekleşmesi için SSH kullanır. Güvenli bir şekilde gerçekleşmesinden kasıt dosya transferinin yapılabilmesi için SSH kimlik doğrulamasından geçilmesi gerekmektedir.
Öncelikli olarak phpseclib kütüphanesini buradan indiriyoruz. Paketimiz içinden "Net" klasörünü kopyalayıp çalışma dizinimiz altına atıyoruz. Kullanımıda oldukça basittir.
Bağlantı kurulması
view plainprint?
<?php
include('Net/SFTP.php');
//Bağlantı kurulacak adresi belirtiyoruz
$sftp = new Net_SFTP('sftp.test.com');
// Kullanıcı adı ve şifreyi belirtiyoruz.
if (!$sftp->login('username', 'password')) {
// Başarısızlık durumunda
// işleme devam etmiyoruz.
exit('Login Failed');
}
?>
Net/SFTP kütüphanesini sayfamıza dahil ettikten sonra sınıfımıza parametre olarak bağlantı kurulacak adresi belirtip login() methodu ile bağlantımızı kuruyoruz. login() methodu işlem başarılıysa geriye true, başarısız ise false döner.
Dosya gönderme işleminde put() methodu kullanılır. Bu method iki parametre alır. Bunlardan birincisi dosyanın karşı tarafta yükleneceği konumdur. ikincisi ise gönderilecek dosya bilgisidir.
Dosya alma işleminde de get() methodu kullanılır. Bu method karşı taraftan çekilecek dosyanın adını parametre olarak alır. Geriyede karşı taraftan çektiği dosyanın içeriğini geriye döner.
Diğer methodlarında listesi şu şekildedir.
nlist(): Belirtilen dizin içindeki dosya listesini geriye bir dizi olarak döndürür.
pwd(): içinde bulunulan aktif dizinin adını geriye döndürür.
chdir(): Dizin değiştir
mkdir(): Dizin oluştur.
rmdir(): Dizin kaldır.
delete(): Dosya sil
rename(): Dosya adı değiştir.
chmod(): Dosya yetkisi ata
size(): Dosya boyutunu al
Dökümantasyon için buraya bakabilirsiniz.Görüldüğü gibi kullanımı çok basit. Bu sebeple şiddetle tavsiye edilir.
Ben phpseclib'i bir projemizde Fortis Bankası ile müşteri dbs limit bilgileri için dosya transferi yapmamız gerektiğinde kullanmıştım.Tabiki çok sık kullanılacak bir kütüphane değil. Ancak ne zaman ihtiyaç duyulacağı belli olmuyor. Bu sebeple arşivde durması gereken bir kütüphane. Faydalı olması dileğiyle.
--spoiler--