Dosya İşlemleri: fopen, fwrite ve fclose ile Dosya Yönetimi

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Veritabanları her ne kadar güçlü olsa da, basit metin dosyalarıyla çalışmak (örneğin hata logları tutmak veya sayaç yapmak) bazen çok daha hızlı ve pratiktir. PHP, sunucu üzerindeki dosyalarla etkileşime geçmek için son derece esnek fonksiyonlar sunar.

1. Dosya İşlemlerinin Temel Akışı​


PHP'de bir dosya üzerinde işlem yaparken şu üç adımı takip ederiz:

  1. [] fopen(): Dosyayı belirli bir amaçla (okuma, yazma vb.) açar ve bir "dosya tutucu" (handle) oluşturur.
    [] fwrite() / fread(): Dosyaya veri yazar veya mevcut veriyi okur.
  2. fclose(): İşlem bittiğinde dosyayı kapatarak sunucu kaynaklarını serbest bırakır.

2. Dosya Açma Modları (Flags)​


fopen fonksiyonunu kullanırken dosyanın nasıl açılacağını belirten "modlar" hayati önem taşır. Yanlış mod seçimi mevcut verilerinizin silinmesine neden olabilir.

ModAçıklamaÖzellik
'r'Sadece OkumaDosya varsa baştan başlar. Yoksa hata verir.
'w'Sadece YazmaDosya varsa içeriğini siler, yoksa oluşturur.
'a'Üzerine EklemeDosya varsa sonuna ekler, yoksa oluşturur.
'x'Sadece OluşturmaDosya varsa false döner, yoksa oluşturur.

3. Örnek: Basit Bir Log (Kayıt) Yazıcı​


Aşağıdaki kod, log.txt adında bir dosya oluşturur ve içine her çalıştırıldığında yeni bir tarih bilgisi ekler.

PHP:
<?php
// 1. Dosyayı 'a' (append/ekleme) modunda açalım
$dosya_adi = "log.txt";
$dosya = fopen($dosya_adi, "a") or die("Dosya açılamadı!");

// 2. Yazılacak veriyi hazırlayalım
$tarih = date("Y-m-d H:i:s");
$mesaj = "Sisteme giriş yapıldı: " . $tarih . "\n";

// 3. Veriyi dosyaya yazalım
if (fwrite($dosya, $mesaj)) {
echo "Log başarıyla kaydedildi.";
} else {
echo "Yazma hatası oluştu.";
}

// 4. Dosyayı kapatalım
fclose($dosya);
?>

4. Dosya Okuma: fgets ve feof​


Bir dosyanın içeriğini satır satır okumak için fgets() kullanılır. feof() (end-of-file) ise dosyanın sonuna gelinip gelinmediğini kontrol eder.

PHP:
$dosya = fopen("liste.txt", "r");

while (!feof($dosya)) {
$satir = fgets($dosya);
echo $satir . "

";
}

fclose($dosya);
?>

Güvenlik ve Performans İpuçları​



  • [] Dosya İzinleri (CHMOD): Sunucudaki dosyanın yazılabilir olduğundan emin olun (Genelde 644 veya 755).
    [] fclose(): Dosyayı kapatmayı asla unutmayın! Açık kalan dosyalar bellek sızıntısına ve dosya kilitlenmelerine yol açabilir.
    [] Kısa Yol: Eğer sadece tek seferde tüm dosyayı okumak veya yazmak istiyorsanız, file_get_contents() ve file_put_contents() fonksiyonları çok daha pratiktir.
    [] Hata Kontrolü: @fopen yerine or die() veya try-catch bloklarını kullanarak hataları yönetin.

Sonuç​


Dosya işlemleri, PHP'nin en temel ve güçlü özelliklerinden biridir. Özellikle dinamik konfigürasyonlar oluştururken veya veritabanı bağlantısının olmadığı durumlarda veri saklamak için bu fonksiyonları bilmek her geliştirici için zorunluluktur. Her zaman doğru modu seçtiğinizden ve işlem bittiğinde dosyayı kapattığınızdan emin olun.
 
Geri
Üst