Projeler ve ajans desteği için müsait · Hızlı yanıt, işi yapan kişiden

PrestaShop mağazası 500 hatası veya boş sayfa veriyor

PrestaShop'ta boş bir sayfa veya 500 hatası tek başına bir şey söylemez: bu bir belirtidir, teşhis değil. Sorunun bir eklentiden, bir override'dan, veritabanından mı yoksa sunucudan mı kaynaklandığını anlamak için gerçek hata mesajlarını okumak gerekir.

Sorunumu anlatayım Mesaj gönderin

Ele aldığım durumlar

  • Sitenin ön yüzü veya yönetim paneli yüklenirken tamamen boş ekran
  • Bir eklenti veya PrestaShop güncellemesinin hemen ardından ortaya çıkan 500 hatası
  • Yalnızca belirli sayfalarda görülen 500 hatası (ürün sayfası, sepet, sipariş)
  • Barındırma sağlayıcısı değişiminden sonra "The file config/settings.inc.php is missing" mesajı
  • Bir override dosyasında yapılan manuel değişiklik sonrası tetiklenen 500 hatası
  • Yerelde çalışan ama üretim sunucusuna aktarılınca hata veren site

Nasıl ilerliyorum

  1. Debug modunun etkinleştirilmesi

    Genel boş sayfa yerine PHP veya Smarty'nin gerçek hata mesajını görebilmek için config/defines.inc.php içinde _PS_MODE_DEV_ değerini true yapıyorum.

  2. Logların incelenmesi

    Sunucunun PHP loglarını (genellikle error_log veya Apache/Nginx logları içinde) ve PrestaShop 1.7/8'de Symfony hatalarını içeren var/logs/ klasörünü inceliyorum.

  3. Sorunlu bileşenin izole edilmesi

    Eklentileri ps_module tablosu veya FTP üzerinden tek tek devre dışı bırakıyor, core ile çakışan bir dosyayı tespit etmek için override/ klasörünün içeriğini kontrol ediyorum.

  4. Sunucu kontrolü

    PHP sürümünü, etkin uzantıları, memory_limit değerini ve var/cache, var/logs ile config üzerindeki yazma izinlerini kontrol ediyorum; bunlar barındırma değişikliği sonrasında sık görülen nedenlerdir.

  5. Düzeltme ve önbelleğin temizlenmesi

    Neden belirlendikten sonra ilgili dosyayı düzeltiyor veya sunucuyu yeniden yapılandırıyorum, ardından debug modunu tekrar false yapmadan önce var/cache/prod'u (1.6'da cache/smarty) temizliyorum.

PrestaShop’ta boş sayfa: nerede göründüğü, nereden geldiğini söyler

Günlükleri okumadan önce bile boş sayfanın ya da 500 hatasının nerede oluştuğunu not edin. Bu, arama alanını yarıya indirir.

  • Hem mağaza hem yönetim paneli boş: arıza, PrestaShop ikisini ayırt etmeden önce oluşuyor. Yapılandırmaya bakın: barındırma firmasının değiştirdiği PHP sürümü, eksik bir app/config/parameters.php (1.7, 8, 9) ya da config/settings.inc.php (1.6), geçersiz bir .htaccess, eksik yazma izinleri.
  • Yalnızca yönetim paneli: çoğu zaman var/cache/ içinde önceki bir sürümden kalan önbellek ya da yönetim paneline bağlanan bir modül.
  • Yalnızca mağaza tarafı ya da tek bir sayfa: bir görüntüleme hook’una bağlı modül, bir tema dosyası ya da o sayfaya özgü bir veri.
  • Yalnızca sipariş adımında: yalnızca bu aşamada çağrılan ödeme ya da kargo modülü.

_PS_MODE_DEV_ açıkken sayfa hâlâ boşsa, hata PrestaShop yüklenmeden önce oluşuyor demektir: okunması gereken var/logs değil, sunucunun PHP hata günlüğüdür.

En sık görülen hata mesajları ve işaret ettikleri

  • Cannot declare class … ya da Cannot redeclare class …: iki kez tanımlanmış ya da bir modül kaldırıldıktan sonra yerinde kalmış bir override. Sınıf dizinini silmek — 1.7 ve sonrasında var/cache/prod/class_index.php, 1.6’da cache/class_index.php — PrestaShop’u onu yeniden oluşturmaya zorlar.
  • Allowed memory size of … bytes exhausted: PHP bellek sınırına ulaşıldı; genellikle bir içe aktarma, küçük resimlerin yeniden oluşturulması ya da bir dizinleme sırasında.
  • Call to undefined function each() ya da create_function(): eski bir PHP sürümü için yazılmış bir modül. Bu fonksiyonlar PHP 8’de kaldırıldı; bkz. PrestaShop’u PHP 8’e geçirmek.
  • SQLSTATE[42S02]: Base table or view not found: bir geçişten, yarıda kalan bir SQL içe aktarmasından ya da düzgün kaldırılmamış bir modülden sonra eksik bir tablo.
  • Link to database cannot be established: yapılandırma dosyasında hatalı veritabanı bilgileri ya da erişilemeyen bir MySQL sunucusu. Bkz. veritabanı bağlantı hatası.
  • var/cache ya da var/logs üzerinde Permission denied: kaybolan yazma izinleri; FTP aktarımından ya da barındırma değişikliğinden sonra sık görülür.

En sık görülen nedenler

PrestaShop'ta 500 hatası nadiren rastlantısaldır. En sık karşılaştığım durumlar:

  • Sınıfın yeniden tanımlanmasına yol açan, hatalı yazılmış veya override/ ile bir eklenti arasında yinelenmiş bir override dosyası.
  • Barındırma sağlayıcısında yapılan bir PHP sürüm yükseltmesi sonrası ortaya çıkan uyumsuzluk (örneğin PHP 8'de kaldırılmış bir fonksiyonu kullanan bir eklenti).
  • FTP ile dosya aktarımından sonra var/cache, var/logs veya config üzerinde eksik yazma izinleri.
  • PrestaShop çalışmaya başlamadan önce yönlendirmeyi bozan, bozulmuş bir .htaccess dosyası veya geçersiz bir yeniden yazma kuralı.
  • Bir geçiş veya yarıda kalan SQL içe aktarma sonrası veritabanında eksik veya bozulmuş bir tablo.

1.6 sürümünde, boş sayfa genellikle bir tema güncellemesinden sonra temizlenmemiş derleme önbelleğindeki (cache/smarty/compile) bir Smarty hatasını gizler.

config/defines.inc.php
define('_PS_MODE_DEV_', true);

İlgili sayfalar

İhtiyacınızı bir dakikada anlatın

Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.

impact
declencheur
debug (facultatif)
logs (facultatif)
message (facultatif)
Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Sıkça sorulan sorular

Siparişlerimi veya müşterilerimi kaybetme riskim var mı?
Hayır. 500 hatası sayfaların görüntülenmesini engeller ama veritabanı sağlam kalır: verilmiş siparişler, müşteri hesapları ve katalog etkilenmez. Duran şey PHP çalıştırma katmanıdır, veri saklama değil.
Hangi erişimleri sağlamam gerekiyor?
FTP veya SSH erişimi, veritabanı erişimi (phpMyAdmin veya doğrudan bilgiler) ve mümkünse PHP yapılandırmasını kontrol edebilmem için barındırma sağlayıcısının müşteri panelinde erişim.
Teşhis ne kadar sürer?
Çoğu durumda, debug modunu etkinleştirmek ve logları okumak, nedeni ilk çalışma oturumunda belirlemek için yeterlidir. Bu, sunucu erişimi hazır olduğunda aynı gün içinde çözülen türden bir engeldir; düzeltmenin kendisi ise neyin bozuk olduğuna bağlıdır.
Hata düzeltildikten sonra tekrar ortaya çıkabilir mi?
Kararsız bir üçüncü taraf eklentiden kaynaklanıyorsa, evet, bir sonraki otomatik güncellemede. Bunun tekrarlanmasını önlemek için hassas eklentilerin güncellemelerini kilitleyebilirim.
Tam bir yedekten yeniden mi başlamak gerekir?
Nadiren. Bir yedeği geri yüklemek, o tarihten sonraki siparişlerin ve değişikliklerin kaybolmasına neden olur. Genellikle sorunlu dosyayı veya yapılandırmayı doğrudan düzeltiyorum.
PrestaShop mağazam neden hiçbir mesaj olmadan boş sayfa gösteriyor?
Çünkü PrestaShop canlı ortamda hataları gizler: _PS_MODE_DEV_ false olduğu sürece ayrıntı gösterilmez. Bir deneme süresince true yapın. Sayfa buna rağmen boş kalıyorsa hata PrestaShop yüklenmeden önce oluşuyordur — PHP sürümü, .htaccess, yapılandırma dosyası — ve onu sunucunun hata günlüğünde bulursunuz.