Bu yazıda PHP projelerinde en sık karşılaşılan 5 hatayı ve pratik çözümlerini bulacaksınız.

1.”Headers Already Sent” Hatası
Sorun:Warning: Cannot modify header information – headers already sent
şeklinde karşımıza çıkar. Genellikle header()
, setcookie()
gibi fonksiyonlar kullanıldığında, daha önce çıktı (HTML, boşluk veya echo) gönderilmişse oluşur.
Çözüm:
header()
fonksiyonunu çağırmadan önce hiçbir çıktı gönderilmediğinden emin olun.- PHP dosyalarının başında BOM (Byte Order Mark) olmamalı. UTF-8 BOM’suz olarak kaydedin.
- Alternatif olarak
ob_start()
ile output buffering kullanabilirsiniz.
2. “Undefined Index” veya “Undefined Variable” Uyarıları
Sorun:
Form verisi veya array elemanına erişirken tanımlı olmayan bir index kullanılırsa çıkar.
Çözüm:
- Değerin varlığını
isset()
veyaempty()
ile kontrol edin:
if (isset($_POST['username'])) {
$username = $_POST['username'];
}
- Modern PHP sürümlerinde null coalescing operator kullanın:
$username = $_POST['username'] ?? '';
3. “Call to Undefined Function” Hatası
Sorun:
Projede kullanılan bir fonksiyon tanımlı değilse veya gerekli PHP eklentisi yüklenmemişse bu hata oluşur.
Çözüm:
- Fonksiyonun bulunduğu dosyanın
include
veyarequire
ile yüklendiğinden emin olun. - İlgili PHP extension’ını (örneğin
mbstring
,gd
) aktif hale getirin.
4. “Maximum Execution Time Exceeded” Hatası
Sorun:
PHP scriptiniz, varsayılan süre (genellikle 30 saniye) içinde tamamlanamazsa bu hata oluşur.
Çözüm:
- Kodun performansını artırın (gereksiz döngüleri kaldırın).
- Gerekirse zaman limitini artırın:
ini_set('max_execution_time', 60); // 60 saniye
Büyük işlemleri queue sistemi veya background job ile yönetin.
5. “Class Not Found” veya “Autoload” Sorunları
Sorun:
Composer ile gelen paketlerde veya kendi sınıflarınızda namespace/autoload yapılandırması yanlışsa oluşur.
Çözüm:
composer dump-autoload
komutunu çalıştırın.- Namespace tanımlarını ve
use
ifadelerini kontrol edin. - PSR-4 standardına uygun dizin yapısı kullanın.