Bir PHP sorununa dair her rehber "display_errors'ı açın" diye başlar. Canlı bir sitede bu, dosya yollarınızı, çerçevenizi, kimi zaman veritabanınızın adını, sayfayı hata verdirebilen herkese yazdırır - buna, tam da bunu denemekte olan kişi de dahildir.

Canlı için doğru ayarlar

display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php/mysite-error.log
error_reporting = E_ALL & ~E_DEPRECATED

Kullanımdan kaldırma uyarıları olmadan E_ALL, eski bir kod tabanında kaydı okunur tutar ve gerçekten yanlış olan her şeyi kaydetmeyi de sürdürür.

Yeniden üretirken izleyin

tail -f /var/log/php/mysite-error.log

Onu çalışır bırakın ve bozuk sayfayı yükleyin. display_errors'ın göstereceği bilginin aynısını, aynı anda alırsınız; hiçbir ziyaretçi de görmez.

Ille de tarayıcıda görmeniz gerekiyorsa

Yalnızca kendinize gösterin, adrese göre:

if ((@$_SERVER["REMOTE_ADDR"] ?? "") === "YOUR.IP.HERE") {
    ini_set("display_errors", "1");
    error_reporting(E_ALL);
}
Bunu, kaldırmayı unutamayacağınız bir denetimin ardına koyun - dağıtılmayan bir yapılandırma dosyasındaki bir sabit; yorum satırına alınmış bir satır değil. Yoruma alınmış bir satır er geç yorumdan çıkarılır.

Fazla hızlı büyüyen bir kayıt

sort /var/log/php/mysite-error.log | uniq -c | sort -rn | head -5

Her istekte bir uyarı, bir günde gigabaytlar yazar. O çıktının en üst satırı neredeyse her zaman sorunun tamamıdır.

Bir PHP yükseltmesinden önce kullanımdan kaldırma uyarılarını bir günlüğüne geri açın. Onlar, bir sonraki sürümde hataya dönüşecek uyarılardır ve erkenden okumak yapılabilecek en ucuz hazırlıktır.