Συνάρτησεις Ερροτων και Καταγραφής του PHP

Εισαγωγή στο PHP Error

Οι συνάρτησεις error και logging επιτρέπουν την επεξεργασία και καταγραφή σφαλμάτων.

Οι συνάρτησεις error επιτρέπουν στους χρήστες να ορίζουν τους κανόνες διαχείρισης σφαλμάτων και να τροποποιούν τον τρόπο καταγραφής σφαλμάτων.

Οι συνάρτησεις logging επιτρέπουν στους χρήστες να καταγράφουν τις εφαρμογές τους και να αποστέλλουν μηνύματα καταγραφής σε ηλεκτρονικούς φακέλους, το σύστημα καταγραφής ή άλλες μηχανές.

Η συνάρτηση error χρησιμοποιείται για την ολοκλήρωση της διαχείρισης σφαλμάτων και της καταγραφής.

Οι συνάρτησεις error επιτρέπουν τη διαμόρφωση των δικών μας κανόνων διαχείρισης σφαλμάτων και την τροποποίηση του τρόπου καταγραφής σφαλμάτων.

Οι συνάρτησεις logging επιτρέπουν την αποστολή μηνυμάτων σε άλλες μηχανές, ηλεκτρονικούς φακέλους ή το σύστημα καταγραφής.

Οι συνάρτησεις αναφοράς σφαλμάτων επιτρέπουν την αναφορά τύπων και επιπέδων σφαλμάτων.

Εγκατάσταση

Οι συνάρτησεις error είναι μέρος του κεντρικού κώδικα του PHP. Δεν απαιτείται εγκατάσταση για να χρησιμοποιηθούν αυτές οι συνάρτησεις.

Ρύθμιση εκτέλεσης

Η συμπεριφορά της συνάρτησης error επηρεάζεται από τις ρυθμίσεις στο php.ini.

Οι επιλογές καταγραφής σφαλμάτων και logging είναι οι εξής:

Όνομα Προεπιλεγμένη τιμή Περιγραφή Χωροθέτηση
error_reporting NULL Ρύθμιση του επιπέδου αναφοράς σφαλμάτων (αριθμητικός ή ονομαστικός μονόλιθος) PHP_INI_ALL
display_errors "1"

Ορίζει αν τα σφάλματα θα εμφανιστούν ως έξοδο στην οθόνη ή θα κρυφτούν από τον χρήστη.

Σημείωση:Αυτή η λειτουργία δεν πρέπει να χρησιμοποιείται σε συστήματα παραγωγής (υποστηρίζεται μόνο για ανάπτυξη)

PHP_INI_ALL
display_startup_errors "0"

Αν και το display_errors είναι ενεργοποιημένο, τα μηνύματα σφαλμάτων κατά την εκκίνηση του PHP δεν θα εμφανίζονται.

Σημείωση: Προτείνεται αυστηρά να οριστεί το display_startup_errors σε απενεργοποιημένη κατάσταση εκτός από σκοπούς αποσφαλμάτωσης.

PHP_INI_ALL
log_errors "0"

Ρύθμιση αν θα καταγραφούν τα μηνύματα σφαλμάτων από την εκτέλεση του σκευή στο αρχείο σφαλμάτων του διακομιστή ή στο error_log.

Σημείωση: Αυτό είναι ένα συγκεκριμένο στοιχείο ρύθμισης που σχετίζεται με τον διακομιστή.

Σημείωση: Στο σύστημα παραγωγής, προτείνεται αυστηρά η χρήση καταγραφής σφαλμάτων για τα μηνύματα σφαλμάτων που εμφανίζονται στον ιστότοπο.

PHP_INI_ALL
log_errors_max_len "1024"

Ρύθμιση της μέγιστης διάστασης σε bytes για το log_errors. Στο error_log θα προστεθεί πληροφορία για την πηγή των σφαλμάτων.

Η προεπιλεγμένη τιμή είναι 1024, αν οριστεί σε 0 σημαίνει χωρίς περιορισμό μήκους.

Η ρύθμιση της μήκους έχει περιοριστική επίδραση στη σφάλματα καταγραφής, τα σφάλματα που εμφανίζονται και το $php_errormsg.

PHP_INI_ALL
ignore_repeated_errors "0"

Καθορίζουμε αν θα καταγράφονται επαναλαμβανόμενα μηνύματα σφαλμάτων.

Τα επαναλαμβανόμενα σφάλματα πρέπει να εμφανίζονται στην ίδια γραμμή κώδικα του ίδιου αρχείου, εκτός αν η ρύθμιση ignore_repeated_source οριστεί ως true.

PHP_INI_ALL
ignore_repeated_source "0"

Καθορίζουμε αν θα καταγράφονται επαναλαμβανόμενα μηνύματα σφαλμάτων. Όταν αγνοούνται τα επαναλαμβανόμενα μηνύματα, αγνοούνται επίσης οι πηγές τους.

Όταν αυτή η ρύθμιση είναι ενεργοποιημένη, οι επαναλαμβανόμενες πληροφορίες δεν θα καταγράφονται αν προέρχονται από διαφορετικά αρχεία ή διαφορετικές γραμμές κώδικα.

PHP_INI_ALL
report_memleaks "1" Αν ο παραμέτρος οριστεί ως On (προεπιλεγμένο), θα εμφανιστούν αναφορές διαρροής μνήμης που αναγνωρίζονται από τον διαχειριστή μνήμης Zend. PHP_INI_ALL
track_errors "0" Αν είναι ενεργοποιημένο, το τελευταίο σφάλμα θα παραμένει πάντα στη μεταβλητή $php_errormsg. PHP_INI_ALL
html_errors "1" Απενεργοποιούμε τις ετικέτες HTML στο μήνυμα σφαλμάτων.
  • PHP_INI_ALL
  • PHP_INI_SYSTEM σε PHP <= 4.2.3.
xmlrpc_errors "0" Αν ενεργοποιηθεί, απενεργοποιείται η κανονική αναφορά σφαλμάτων και ο μορφοποιητής σφαλμάτων ορίζεται ως μορφή μηνυμάτων σφάλματος XML-RPC. PHP_INI_SYSTEM
xmlrpc_error_number "0" Χρησιμοποιείται ως τιμή του στοιχείου faultCode στο XML-RPC. PHP_INI_ALL
docref_root "" (διαθέσιμο από PHP 4.3) PHP_INI_ALL
docref_ext "" (διαθέσιμο από PHP 4.3.2) PHP_INI_ALL
error_prepend_string NULL Καθορίζουμε την αλφαβητική ακολουθία που θα προστεθεί πριν το μήνυμα σφάλματος. PHP_INI_ALL
error_append_string NULL Καθορίζουμε την αλφαβητική ακολουθία που θα προστεθεί μετά το μήνυμα σφάλματος. PHP_INI_ALL
error_log NULL

Ρυθμίζουμε το αρχείο στο οποίο θα καταγράφονται τα σφάλματα του σκрипτ. Το αρχείο πρέπει να είναι γραπτό από τον χρήστη του διακομιστή web.

Αν χρησιμοποιηθεί η ειδική τιμή syslog, τα μηνύματα σφαλμάτων θα αποσταλούν στον καταγραφέα συστήματος.

PHP_INI_ALL

Συνάρτησεις Ερροτων και Καταγραφής του PHP

Συνάρτηση Περιγραφή
debug_backtrace() Δημιουργούμε το backtrace.
debug_print_backtrace() Εκτυπώνουμε το backtrace.
error_get_last() Επιστρέφουμε το τελευταίο σφάλμα που συνέβη.
error_log() Αποστέλουμε μηνύματα σφαλμάτων στο αρχείο καταγραφής σφαλμάτων του διακομιστή, στο αρχείο ή σε απομακρυσμένο στόχο.
error_reporting() Καθορίζουμε ποιο σφάλμα να αναφέρουμε.
restore_error_handler() Επαναφέρουμε τον προηγούμενο επεξεργαστή σφαλμάτων.
restore_exception_handler() Επαναφορά προηγούμενης συνάρτησης διαχείρισης εξαιρέσεων.
set_error_handler() Ρύθμιση χρήστης εξειδικευμένης συνάρτησης διαχείρισης σφαλμάτων.
set_exception_handler() Ρύθμιση χρήστης εξειδικευμένης συνάρτησης διαχείρισης εξαιρέσεων.
trigger_error() Δημιουργία αναφορών σφαλμάτων επιπέδου χρήστη.
user_error() Άλλοτε του trigger_error()

Προκαθορισμένα σφάλματα και μοναδικές συνθήκες καταγραφής του PHP 5

Αξία Σταθερά Περιγραφή
1 E_ERROR Καταστροφικά σφάλματα κατά την εκτέλεση. Σφάλματα που δεν μπορούν να διορθωθούν. Σταματά την εκτέλεση του σκευασμάτων.
2 E_WARNING Μη καταστροφικά σφάλματα κατά την εκτέλεση. Δεν σταματά την εκτέλεση του σκευασμάτων.
4 E_PARSE Σφάλματα γραμματικής κατά την ανασκόπηση. Η λάθος ανάλυση παράγεται μόνο από τον αναλυτή.
8 E_NOTICE Ειδοποιήσεις κατά την εκτέλεση. Ενδείκνυε ότι το σενάριο αντιμετωπίζει μια κατάσταση που μπορεί να εκδηλωθεί ως σφάλμα, αλλά μπορεί να υπάρχει και μια ειδοποίηση σε ένα σενάριο που εκτελείται κανονικά.
16 E_CORE_ERROR Καταστροφικά σφάλματα κατά την εκκίνηση της PHP. Το σφάλμα είναι αντίστοιχο με E_ERROR, αλλά δημιουργείται από το κεντρικό μέρος του μηχανισμού εκτέλεσης της PHP.
32 E_CORE_WARNING Προειδοποιήσεις κατά την εκκίνηση της PHP (μη καταστροφικά σφάλματα). Αντίστοιχη με E_WARNING, αλλά δημιουργούνται από το κεντρικό μέρος του μηχανισμού εκτέλεσης της PHP.
64 E_COMPILE_ERROR Καταστροφικά σφάλματα κατά την ανασκόπηση. Αντίστοιχη με E_ERROR, αλλά δημιουργούνται από τον μηχανισμό εκτέλεσης του Zend.
128 E_COMPILE_WARNING Προειδοποιήσεις κατά την ανασκόπηση (μη καταστροφικά σφάλματα). Αντίστοιχη με E_WARNING, αλλά δημιουργούνται από τον μηχανισμό εκτέλεσης του Zend.
256 E_USER_ERROR Αναφορές σφαλμάτων που δημιουργούνται από τους χρήστες. Αντίστοιχη με E_ERROR, αλλά δημιουργούνται από τον χρήστη στον κώδικα με τη χρήση της φιλοξενίας PHP trigger_error().
512 E_USER_WARNING Αναφορές προειδοποιήσεων που δημιουργούνται από τους χρήστες. Αντίστοιχη με E_WARNING, αλλά δημιουργούνται από τον χρήστη στον κώδικα με τη χρήση της φιλοξενίας PHP trigger_error().
1024 E_USER_NOTICE Αναφορές ειδοποιήσεων που δημιουργούνται από τους χρήστες. Αντίστοιχη με E_NOTICE, αλλά δημιουργούνται από τον χρήστη στον κώδικα με τη χρήση της φιλοξενίας PHP trigger_error().
2048 E_STRICT Ενεργοποίηση της λειτουργίας προτάσεων τροποποίησης κώδικα του PHP για να διασφαλιστεί η καλύτερη αλληλεπίδραση και συμβατότητα προς το μέλλον του κώδικα.
4096 E_RECOVERABLE_ERROR Κατάληψης σφαλμάτων που μπορούν να συλληφθούν. Αυτό σημαίνει ότι έχει συμβεί ένα σφάλμα που μπορεί να είναι πολύ επικίνδυνο, αλλά δεν έχει προκαλέσει την ασταθή κατάσταση του φιλιππικού υλικού. Αν το σφάλμα δεν έχει συλληφθεί από τον προσαρμοσμένο χειριστή του χρήστη (βλέπε set_error_handler()), θα γίνει E_ERROR και το σενάριο θα σταματήσει την εκτέλεση.
8192 E_DEPRECATED Ειδοποιήσεις κατά τη διάρκεια της εκτέλεσης. Μετά την ενεργοποίηση, θα δώσει προειδοποιήσεις για κώδικα που μπορεί να μην λειτουργεί σωστά στις μελλοντικές εκδόσεις.
16384 E_USER_DEPRECATED Προειδοποιήσεις που δημιουργούνται από τους χρήστες. Αναφέρεται σε E_DEPRECATED, αλλά δημιουργείται από τους χρήστες στον κώδικα με τη χρήση της φιλιππικής λειτουργίας trigger_error().
32767 E_ALL E_STRICT Όλες οι σφάλματα και οι προειδοποιήσεις πληροφορίες εκτός αυτών.