PHP & Backend

PHP 8+ Üretim Ortamında Hata Yönetimi: 500 Hatasını Kullanıcıya Değil Loga Anlatın

PHP 8+ Üretim Ortamında Hata Yönetimi: 500 Hatasını Kullanıcıya Değil Loga Anlatın

Üretim ortamında ayrıntılı PHP stack trace göstermek geliştirici için kolay, saldırgan için ise gereksiz teknik bilgi kaynağıdır.

Temel prensip

  • Canlıda display_errors kapalı.
  • log_errors açık ve log dosyası web root dışında.
  • Kullanıcıya kısa ve anlaşılır hata mesajı.
  • Her hata için correlation/request ID.
  • Loglarda parola, token ve kişisel veri maskeleme.

500 hatasında teşhis sırası

  1. Uygulama logu
  2. PHP-FPM/Apache/Nginx error log
  3. Son deploy/değişen modül
  4. PHP sürümü ve extension değişikliği
  5. Veritabanı bağlantısı ve timeout
  6. Dosya izinleri

PrestaShop modüllerinde

Sipariş başarı ekranında hata oluşsa bile ödeme alınmış ve sipariş oluşmuş olabilir. Bu nedenle hata tekrarında “ödeme başarısız” varsayımı yapmak yerine ödeme ve sipariş durumunu idempotent şekilde doğrulamak gerekir.