Cara menggunakan show error php htaccess

Dalam artikel saya sebelumnya tentang mencatat kesalahan PHP, Cara Mengaktifkan Logging Kesalahan PHP melalui htaccess, kami mengamati tiga aspek mendasar untuk mencegah, melestarikan, dan melindungi kesalahan PHP situs Anda

Cegah tampilan publik dari kesalahan PHP melalui htaccess

# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

Pertahankan (catat) kesalahan PHP situs Anda melalui htaccess

# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log
_

Lindungi log kesalahan PHP situs Anda melalui htaccess

# prevent access to PHP error log
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>

Sekarang, dalam artikel ini, kita akan mengeksplorasi operasi1 ini secara lebih mendalam, menyediakan fungsionalitas tambahan, dan mengkaji berbagai implikasi. Pertama kita akan mengeksplorasi penanganan kesalahan PHP untuk lingkungan produksi (mis. e. , untuk situs web dan aplikasi yang online, aktif, dan publik), maka kami akan mempertimbangkan penanganan kesalahan untuk lingkungan pengembangan (mis. e. , untuk proyek yang sedang dalam pengembangan, pengujian, pribadi, dll. )

Mengontrol tingkat pelaporan kesalahan PHP

Dengan menggunakan htaccess, dimungkinkan untuk mengatur tingkat pelaporan kesalahan agar sesuai dengan kebutuhan khusus Anda. Format umum untuk mengontrol tingkat kesalahan PHP adalah sebagai berikut

# general directive for setting php error level
php_value error_reporting integer

Ada beberapa nilai umum yang digunakan untuk "bilangan bulat", antara lain

  • Pelaporan kesalahan lengkap — untuk menyelesaikan pencatatan kesalahan PHP, gunakan nilai bilangan bulat pelaporan kesalahan “8191”, yang akan mengaktifkan pencatatan semua hal kecuali pemberitahuan run-time2
  • Pelaporan kesalahan Zend — untuk merekam peringatan waktu kompilasi fatal dan non-fatal yang dihasilkan oleh mesin skrip Zend, gunakan nilai bilangan bulat pelaporan kesalahan “
    # enable PHP error logging
    php_flag  log_errors on
    php_value error_log  /home/path/public_html/domain/PHP_errors.log
    0”
  • Pelaporan kesalahan dasar — ​​untuk merekam pemberitahuan run-time, kesalahan penguraian waktu kompilasi, serta kesalahan dan peringatan run-time, gunakan "
    # enable PHP error logging
    php_flag  log_errors on
    php_value error_log  /home/path/public_html/domain/PHP_errors.log
    1" untuk nilai integer pelaporan kesalahan
  • Pelaporan kesalahan minimal — untuk merekam hanya kesalahan run-time yang fatal, gunakan nilai bilangan bulat pelaporan kesalahan "
    # enable PHP error logging
    php_flag  log_errors on
    php_value error_log  /home/path/public_html/domain/PHP_errors.log
    2", yang akan mengaktifkan pencatatan kesalahan yang tidak dapat dipulihkan

Tentu saja, masih banyak lagi nilai pelaporan kesalahan yang tersedia, tergantung pada tujuan pencatatan kesalahan Anda. Untuk informasi lebih lanjut tentang mencatat error PHP, lihat halaman Error Handling and Logging Functions di php. bersih

Mengatur ukuran file maksimum untuk string kesalahan Anda

Menggunakan htaccess, Anda dapat menentukan ukuran maksimum untuk kesalahan PHP Anda. Ini mengontrol ukuran setiap kesalahan yang dicatat, bukan ukuran file secara keseluruhan. Berikut sintaks umumnya

# general directive for setting max error size
log_errors_max_len integer

Di sini, "bilangan bulat" mewakili ukuran maksimum setiap string kesalahan yang direkam yang diukur dalam byte. Nilai defaultnya adalah “

# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log
_3” (mis. e. , 1 kilobyte). Untuk melepaskan kekuatan logging Anda sepenuhnya, Anda dapat menggunakan nilai nol, "
# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log
4", untuk menunjukkan "tidak ada maksimum" dan dengan demikian menghapus semua batasan. Perhatikan bahwa nilai ini juga diterapkan pada kesalahan yang ditampilkan saat diaktifkan (mis. g. , selama pengembangan)

Nonaktifkan pencatatan kesalahan berulang

Jika Anda ingat terakhir kali Anda memeriksa log kesalahan PHP yang sehat (atau sakit, tergantung pada sudut pandang Anda), Anda mungkin mengingat entri yang tak terhitung jumlahnya dari kesalahan yang hampir identik, di mana satu-satunya perbedaan untuk setiap baris adalah stempel waktu peristiwa tersebut. Jika Anda ingin menonaktifkan redundansi ini, letakkan kode berikut di file htaccess root proyek Anda

# disable repeated error logging
php_flag ignore_repeated_errors on
php_flag ignore_repeated_source on

Dengan adanya baris ini, kesalahan berulang tidak akan dicatat, meskipun berasal dari sumber atau lokasi yang berbeda. Jika Anda hanya ingin menonaktifkan kesalahan berulang dari sumber atau file yang sama, cukup beri komentar atau hapus baris terakhir. Sebaliknya, untuk memastikan bahwa file log Anda menyertakan semua kesalahan berulang, ubah kedua nilai

# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log
5 ​​menjadi
# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log
6

Menyatukan semuanya — Lingkungan Produksi

Setelah membahas beberapa cara berguna untuk menyesuaikan pengalaman pencatatan kesalahan PHP kita, mari kita selesaikan semuanya dengan strategi penanganan kesalahan berbasis htaccess yang solid untuk lingkungan produksi umum. Berikut adalah kode untuk file htaccess target Anda

# PHP error handling for production servers
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/path/public_html/domain/PHP_errors.log
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1
php_value log_errors_max_len 0

<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>

Atau, jika Anda mau, versi penjelasan dari kode yang sama, menggunakan komentar untuk menjelaskan setiap baris

# PHP error handling for production servers

# disable display of startup errors
php_flag display_startup_errors off

# disable display of all other errors
php_flag display_errors off

# disable html markup of errors
php_flag html_errors off

# enable logging of errors
php_flag log_errors on

# disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# disable ignoring of unique source errors
php_flag ignore_repeated_source off

# enable logging of php memory leaks
php_flag report_memleaks on

# preserve most recent error via php_errormsg
php_flag track_errors on

# disable formatting of error reference links
php_value docref_root 0

# disable formatting of error reference links
php_value docref_ext 0

# specify path to php error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# specify recording of all php errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# disable max error string length
php_value log_errors_max_len 0

# protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>

Strategi penanganan kesalahan PHP ini ideal untuk lingkungan produksi umum. Singkatnya, kode ini mengamankan server Anda dengan menonaktifkan tampilan publik dari pesan kesalahan, namun juga mengaktifkan transparansi kesalahan lengkap untuk administrator melalui log kesalahan pribadi. Tentu saja, Anda mungkin ingin menyesuaikan kode ini agar sesuai dengan kebutuhan spesifik Anda. Seperti biasa, silakan bagikan pemikiran, ide, tip, dan trik Anda dengan sesama pembaca. Sekarang, mari kita lihat strategi penanganan kesalahan umum untuk lingkungan pengembangan

Menyatukan semuanya — Lingkungan Pengembangan

Selama pengembangan proyek, ketika akses publik ke proyek Anda tidak tersedia, Anda mungkin merasa bermanfaat untuk menangkap kesalahan PHP secara real time, di mana keadaan dari waktu ke waktu terus berkembang. Berikut adalah strategi penanganan kesalahan PHP berbasis htaccess umum untuk lingkungan pengembangan. Tempatkan kode ini di file htaccess target Anda

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/path/public_html/domain/PHP_errors.log
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1
php_value log_errors_max_len 0

<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>

Untuk kode ini, kami akan mengabaikan penjelasan baris demi baris, karena mungkin diekstrapolasi dari bagian sebelumnya. Strategi penanganan kesalahan PHP ini sangat ideal untuk lingkungan pengembangan umum. Singkatnya, kode ini memungkinkan penanganan kesalahan waktu-nyata melalui tampilan pesan kesalahan secara publik, sekaligus mengaktifkan transparansi kesalahan yang lengkap untuk administrator melalui log kesalahan pribadi. Tentu saja, Anda mungkin ingin menyesuaikan kode ini agar sesuai dengan kebutuhan spesifik Anda. Seperti biasa, silakan bagikan pemikiran, ide, tip, dan trik Anda dengan sesama pembaca. Itu saja untuk artikel ini — sampai jumpa lagi