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.
PHP'de bir dosya üzerinde işlem yaparken şu üç adımı takip ederiz:
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.
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.
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.
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.
1. Dosya İşlemlerinin Temel Akışı
PHP'de bir dosya üzerinde işlem yaparken şu üç adımı takip ederiz:
[] 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.- 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.
| Mod | Açıklama | Özellik |
|---|---|---|
| 'r' | Sadece Okuma | Dosya varsa baştan başlar. Yoksa hata verir. |
| 'w' | Sadece Yazma | Dosya varsa içeriğini siler, yoksa oluşturur. |
| 'a' | Üzerine Ekleme | Dosya varsa sonuna ekler, yoksa oluşturur. |
| 'x' | Sadece Oluşturma | Dosya 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.