Setiap panduan untuk masalah PHP dimulai dengan "nyalakan display_errors". Di situs yang hidup, itu mencetak jalur berkas Anda, kerangka Anda, kadang nama basis data Anda, kepada siapa pun yang bisa membuat halamannya menyalakan galat - termasuk kepada orang yang sedang mencobanya.

Pengaturan yang benar untuk situs hidup

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

E_ALL tanpa peringatan usang menjaga catatannya tetap terbaca pada kode yang tua, sambil tetap mencatat semua yang sungguh salah.

Awasi sambil Anda menghadirkan ulang masalahnya

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

Biarkan itu berjalan lalu muat halaman yang rusak. Anda mendapat keterangan yang sama seperti yang akan ditampilkan display_errors, pada saat yang sama, tanpa seorang pengunjung pun melihatnya.

Kalau Anda memang harus melihatnya di peramban

Tampilkan hanya kepada diri Anda, berdasarkan alamat:

if ((@$_SERVER["REMOTE_ADDR"] ?? "") === "YOUR.IP.HERE") {
    ini_set("display_errors", "1");
    error_reporting(E_ALL);
}
Taruh itu di balik sebuah pemeriksaan yang tak mungkin lupa Anda cabut - sebuah tetapan di berkas konfigurasi yang tidak ikut diterapkan, bukan sebuah baris yang dijadikan komentar. Baris yang dijadikan komentar cepat atau lambat dikembalikan lagi.

Catatan yang tumbuh terlalu cepat

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

Satu pemberitahuan pada setiap permintaan menulis bergiga-giga dalam sehari. Baris teratas keluaran itu hampir selalu merupakan seluruh masalahnya.

Nyalakan lagi peringatan usang sehari sebelum meningkatkan PHP. Itulah peringatan yang menjadi galat di versi berikutnya, dan membacanya lebih awal adalah persiapan paling murah yang ada.