🔴 Shop Ürün 500 Error Analizi

📅 Tarih: 2025-12-03 00:05 | 🎯 Tenant: ixtif.com (Tenant 2) | 🔗 URL: /shop/ampul-12v-duysuz
❌ HTTP 500 Server Error

🔍 Sorun Özeti

Ana Sorun

ampul-12v-duysuz slug'ına sahip ürün database'de bulunamadı. Laravel route sistemi ürünü arayıp bulamayınca 500 Internal Server Error döndü.

https://ixtif.com/shop/ampul-12v-duysuz → 404 olmalıydı ama 500 döndü
500
HTTP Hatası
0
Bulunan Ürün
1
Toplam Ürün

🧪 Test Sonuçları

1️⃣ HTTP Durum Testi

curl -I https://ixtif.com/shop/ampul-12v-duysuz
Sonuç: HTTP/2 500 (Beklenen: 404)

2️⃣ Database Slug Sorgusu

ShopProduct slug='ampul-12v-duysuz' sorgusu
Sonuç: 0 kayıt bulundu
SELECT * FROM shop_products WHERE JSON_UNQUOTE(JSON_EXTRACT(slug, '$.\"tr\"')) = 'ampul-12v-duysuz' → 0 rows

3️⃣ Trash Kontrolü

Silinmiş ürünler içinde arama
Sonuç: Trash'te de bulunamadı

4️⃣ Genel Ürün Envanteri

Database'de toplam ürün sayısı
Sonuç: 1 ürün var (Test Ürün - PayTR Ödeme Testi)

"ampul" kelimesini içeren ürün bulunamadı. Bu ürün database'e hiç eklenmemiş veya tamamen silinmiş.

🎯 Kök Sebep Analizi

Neden 500 Error?

Laravel'in ShopController::show() metodu ürünü bulamadığında abort(404) çağırmalı. Ancak 500 döndüğü için muhtemelen:

  • View dosyası bulunamıyor
  • Theme servisinde hata var
  • Bir Exception yakalanmamış

Neden Ürün Yok?

Üç olasılık var:

  1. Ürün hiç oluşturulmamış: Admin panelde ürün kaydı yapılmamış
  2. Ürün silinmiş: Daha önce vardı ama hard delete ile kalıcı silindi
  3. Farklı slug kaydedilmiş: Ürün var ama slug'ı "ampul-12v-duysuz" değil

✅ Çözüm Önerileri

1. Admin Panel Kontrolü Yüksek Öncelik

Admin panelde /admin/shop sayfasına gidip "ampul" kelimesini arayın. Ürün varsa slug'ını kontrol edin.

https://ixtif.com/admin/shop Arama: "ampul"

Beklenen Sonuç: Ürün yoksa yeniden oluşturun. Varsa doğru slug'ı öğrenin.

2. Ürün Yeniden Oluşturma Yüksek Öncelik

Eğer ürün tamamen silinmişse veya hiç yoksa, admin panelden yeniden oluşturun:

  • Başlık: Ampul 12V Duysuz (veya doğru isim)
  • Slug (TR): ampul-12v-duysuz
  • Durum: Aktif + Yayında
  • Kategori: İlgili kategoriyi seçin

3. Database Doğrudan Sorgu Orta Öncelik

Tüm ürünleri listeleyip "ampul" içeren varsa görmek için:

php artisan tinker $products = \Modules\Shop\App\Models\ShopProduct::all(); foreach($products as $p) { echo $p->product_id . ' | ' . $p->title['tr'] . ' | ' . $p->slug['tr'] . "\n"; }

Amaç: Tüm ürünleri görerek "ampul" ile ilgili ürün var mı kontrol edin.

4. 500 Error → 404 Düzeltmesi Orta Öncelik

Controller'da ShopController.php:174-178 satırlarında ürün bulunamazsa abort(404) çağırılıyor. Bu doğru çalışmalı ama 500 döndüğü için bir Exception yakalanmamış olabilir.

Geçici Çözüm: Laravel log dosyasına bakarak gerçek hatayı bulun.

tail -100 storage/logs/laravel.log | grep -i "shop\|ampul"

📋 Hızlı Kontrol Listesi

  • ☐ Admin panelde ürünü aradım
  • ☐ Ürün yoksa yeniden oluşturdum
  • ☐ Slug'ı "ampul-12v-duysuz" olarak ayarladım
  • ☐ Ürün durumunu "Aktif" + "Yayında" yaptım
  • ☐ Sayfayı test ettim (200 OK dönmeli)

🔧 Teknik Detaylar

Route Yapısı

Route: /shop/{slug} Controller: ShopController::show() Method: GET Query: JSON_UNQUOTE(JSON_EXTRACT(slug, '$.\"tr\"')) = 'ampul-12v-duysuz'

Beklenen Database Kaydı

Table: shop_products slug: {"tr": "ampul-12v-duysuz", "en": "bulb-12v-socketless"} is_active: 1 published_at: NOT NULL deleted_at: NULL