PHP geliştirirken, hem kodlama hataları hem de sunucu yapılandırmasından kaynaklanan hatalarla karşılaşmak mümkündür. Bu rehberde, en sık görülen PHP hataları, nedenleri ve çözümleri ele alınacaktır.


1. Parse Error (Sözdizimi Hatası)

📌 Hata Mesajı Örneği:

Parse error: syntax error, unexpected 'echo' (T_ECHO) in index.php on line 10

📌 Nedeni:

📌 Çözüm:
✅ Kodunuzu dikkatlice inceleyin, eksik veya yanlış yerleştirilmiş noktalı virgülleri ve parantezleri düzeltin.
PHP linter ile kodu kontrol edin:

php -l index.php

2. Fatal Error (Ölümcül Hata)

📌 Hata Mesajı Örneği:

Fatal error: Uncaught Error: Call to undefined function customFunction() in index.php on line 15

📌 Nedeni:

📌 Çözüm:
✅ Kullanılan fonksiyonun gerçekten tanımlı olup olmadığını kontrol edin.
PHP uzantıları eksikse yükleyin:

sudo apt install php-mbstring

3. Warning (Uyarı Mesajları)

📌 Hata Mesajı Örneği:

Warning: include(file.php): failed to open stream: No such file or directory in index.php on line 20

📌 Nedeni:

📌 Çözüm:
Dosyanın mevcut olup olmadığını kontrol edin:

if (file_exists("file.php")) {
    include("file.php");
} else {
    echo "Dosya bulunamadı!";
}

4. Undefined Variable (Tanımsız Değişken)

📌 Hata Mesajı Örneği:

Notice: Undefined variable: username in index.php on line 5

📌 Nedeni:

📌 Çözüm:
Değişkenin tanımlandığından emin olun:

$username = isset($_POST['username']) ? $_POST['username'] : '';

5. Headers Already Sent (Başlıklar Zaten Gönderildi)

📌 Hata Mesajı Örneği:

Warning: Cannot modify header information - headers already sent by (output started at index.php:5) in index.php on line 10

📌 Nedeni:

📌 Çözüm:
Çıktıyı temizleyin:

ob_start();
header("Location: dashboard.php");
ob_end_flush();

PHP dosyanızda BOM (Byte Order Mark) olup olmadığını kontrol edin.


6. Maximum Execution Time Exceeded (Maksimum Çalışma Süresi Aşıldı)

📌 Hata Mesajı Örneği:

Fatal error: Maximum execution time of 30 seconds exceeded in script.php on line 25

📌 Nedeni:

📌 Çözüm:
Maksimum çalışma süresini artırabilirsiniz:

set_time_limit(60);

Sonsuz döngüler olup olmadığını kontrol edin.


7. Allowed Memory Size Exhausted (Bellek Limiti Aşıldı)

📌 Hata Mesajı Örneği:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in script.php on line 30

📌 Nedeni:

📌 Çözüm:
PHP’nin bellek limitini artırabilirsiniz:

ini_set('memory_limit', '256M');

Daha verimli bellek yönetimi sağlayın:

unset($large_array);

8. MySQL Connection Failed (Veritabanına Bağlanamıyor)

📌 Hata Mesajı Örneği:

Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES)

📌 Nedeni:

📌 Çözüm:
Bağlantı bilgilerinin doğru olduğunu kontrol edin:

$conn = new mysqli("localhost", "root", "password", "veritabani");
if ($conn->connect_error) {
    die("Bağlantı hatası: " . $conn->connect_error);
}

MySQL servisini başlatın:

sudo systemctl restart mysql

9. CSRF ve XSS Güvenlik Açıkları

📌 Hata: Kullanıcı giriş formlarında güvenlik açıkları
📌 Nedeni: Kullanıcı girişleri doğrudan işleniyor ve filtrelenmiyor

📌 Çözüm:
Cross-Site Scripting (XSS) önleme:

$username = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');

CSRF koruması ekleyin:

session_start();
$csrf_token = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $csrf_token;

10. File Upload Errors (Dosya Yükleme Hataları)

📌 Hata Mesajı Örneği:

Warning: move_uploaded_file(): Unable to move file to destination

📌 Nedeni:

📌 Çözüm:
Dosya izinlerini ayarlayın:

chmod 755 /var/www/html/uploads

PHP dosya yükleme limitini artırın:

ini_set('upload_max_filesize', '10M');

Sonuç

📌 PHP geliştirme sırasında en sık karşılaşılan hatalar ve çözümleri şunlardır:
Sözdizimi hatalarını php -l dosya.php ile kontrol edin.
Fatal hatalar için fonksiyon ve sınıfların tanımlı olup olmadığını kontrol edin.
Hata loglarını görmek için error_reporting(E_ALL); kullanın.
Bellek ve zaman limitlerini optimize edin.
Güvenlik açıklarına karşı CSRF ve XSS önlemleri alın.

🚀 PHP projelerinizin hatasız çalışması için düzenli hata kontrolleri yapmayı unutmayın!