25 Nisan 2008 Cuma

PHP ile FTP İşlemleri

Merhaba Webkolog takipçileri! Bugünkü makalemde, PHP ile dosya sunucularına bağlanmak, dosya yüklemek, indirmek veya yönetmek için kullandığımız FTP (File Transfer Protocol) işlemlerini anlatacağım. Özellikle uzak sunucularda dosya manipülasyonu yapmanız gerektiğinde, PHP'nin FTP fonksiyonları işinizi oldukça kolaylaştırır.

Bu yazıda, PHP 5.2 ve önceki versiyonlarda sorunsuz çalışan temel FTP fonksiyonlarını inceleyeceğiz. Unutmayın, bu fonksiyonları kullanabilmek için sunucunuzda PHP'nin FTP modülünün etkin olması gerekir.

Temel FTP Fonksiyonları ve Kullanımı

FTP işlemlerinin mantığı oldukça basittir: önce bir FTP sunucusuna bağlanırız, ardından kullanıcı adı ve şifre ile oturum açarız, istediğimiz işlemleri yaparız ve en sonunda bağlantıyı kapatırız.

1. FTP Bağlantısı Kurma

Bir FTP sunucusuna bağlanmak için ftp_connect() fonksiyonunu kullanırız. Bu fonksiyon, başarılı bir bağlantıda bir kaynak (resource) döndürür, aksi halde false döner.

<?php
    $ftp_sunucu = "ftp.siteniz.com";
    $ftp_kullanici = "kullanici_adi";
    $ftp_sifre = "sifre";

    // FTP bağlantısı kur
    $baglanti = ftp_connect($ftp_sunucu) or die("FTP sunucusuna bağlanılamadı.");
    
    // Oturum açma
    $giris = ftp_login($baglanti, $ftp_kullanici, $ftp_sifre);

    if ($giris) {
        echo "FTP bağlantısı başarıyla kuruldu.";
    } else {
        echo "FTP kullanıcı adı veya şifre hatalı.";
    }
?>

2. Dosya Yükleme (Upload)

Yerel sunucunuzdaki bir dosyayı FTP sunucusuna yüklemek için ftp_put() fonksiyonunu kullanırız.

<?php
    $yerel_dosya = "resim.jpg";
    $uzak_dosya = "public_html/resim.jpg";

    // ftp_put fonksiyonu, başarılı olursa TRUE, başarısız olursa FALSE döner
    if (ftp_put($baglanti, $uzak_dosya, $yerel_dosya, FTP_BINARY)) {
        echo "Dosya başarıyla yüklendi: $yerel_dosya";
    } else {
        echo "Dosya yükleme sırasında bir hata oluştu.";
    }
?>

Burada FTP_BINARY, dosyanın ikili (binary) modda yükleneceğini belirtir. Metin dosyaları için FTP_ASCII kullanabilirsiniz.

3. Dosya İndirme (Download)

FTP sunucusundaki bir dosyayı yerel sunucunuza indirmek için ftp_fget() fonksiyonunu kullanabiliriz. Bu fonksiyon, dosyayı bir kaynak (resource) olarak kaydetmenizi sağlar.

<?php
    $uzak_dosya = "raporlar/rapor.txt";
    $yerel_dosya = "yerel_rapor.txt";
    
    // Yerel sunucuda yazmak için bir dosya kaynağı oluştur
    $dosya_kaynagi = fopen($yerel_dosya, "w");
    
    // ftp_fget() ile dosyayı indir
    if (ftp_fget($baglanti, $dosya_kaynagi, $uzak_dosya, FTP_ASCII)) {
        echo "Dosya başarıyla indirildi: $uzak_dosya";
    } else {
        echo "Dosya indirme sırasında bir hata oluştu.";
    }
    
    // Açtığımız dosya kaynağını kapat
    fclose($dosya_kaynagi);
?>

4. Dosya ve Klasör Yönetimi

FTP fonksiyonları sadece dosya transferi için değil, aynı zamanda uzak sunucudaki dosya ve klasörleri yönetmek için de kullanılır.

<?php
    // Yeni bir klasör oluştur
    if (ftp_mkdir($baglanti, "yeni_klasor")) {
        echo "Klasör başarıyla oluşturuldu.";
    }

    // Bir dosyanın adını değiştir
    if (ftp_rename($baglanti, "eski_dosya.txt", "yeni_dosya.txt")) {
        echo "Dosya adı başarıyla değiştirildi.";
    }
    
    // Bir dosyayı sil
    if (ftp_delete($baglanti, "silinecek_dosya.txt")) {
        echo "Dosya başarıyla silindi.";
    }

    // Dosya izinlerini (CHMOD) değiştir
    if (ftp_chmod($baglanti, 0600, "gizli_dosya.txt")) {
        echo "Dosya izinleri başarıyla değiştirildi.";
    }
?>

5. FTP Bağlantısını Kapatma

Tüm işlemler tamamlandıktan sonra, sunucu kaynaklarını serbest bırakmak için bağlantıyı kapatmamız gerekir.

<?php
    // Tüm işlemler bittikten sonra bağlantıyı kapat
    ftp_close($baglanti);
?>

Evet sevgili Webkolog okuyucuları, PHP'nin FTP fonksiyonları ile temel dosya sunucusu işlemlerini nasıl yapacağınızı anlatmaya çalıştım. Bu fonksiyonlar sayesinde, web uygulamalarınız içinde dosya transferi ve yönetimi gibi işlemleri kolayca otomatikleştirebilirsiniz.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder