Απόκρυψη προειδοποιήσεων στην php

Στις σελίδες που χρησιμοποιείται κώδικας php όταν κάποια εντολή περιλαμβάνει λάθη εκτέλεσης, εμφανίζεται στον browser η γνωστή προειδοποίηση PHP WARNING:..κλπ. Αυτό είναι αρκετά βοηθητικό την περίοδο που αναπτύσσουμε και τεστάρουμε την σελίδα μας, καθώς μας βοηθάει να εντοπίσουμε και να διορθώσουμε λάθη. Στην περίπτωση όμως που ανεβάσουμε την σελίδα μας και την κάνουμε προσιτή στο κοινό, είναι πιθανό να θέλουμε για αισθητικούς λόγους να μην φαίνονται τυχόν προειδοποιήσεις PHP που δεν θα οδηγήσουν σε fatal error και σε αναστολή εκτέλεσης της σελίδας.

Ένας κεντρικός τρόπος για την απόκρυψη των προειδοποιήσεων είναι μέσω του αρχείου php.ini που βρίσκεται στον κατάλογο της php του server μας. Εκεί θα αναζητήσουμε την ενότητα "Error handling and logging" η οποία αναφέρει την χρήση της παραμέτρου error_reporting.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; error_reporting is a bit-field. Or each number up to get desired error
; reporting level
; E_ALL - All errors and warnings
; E_ERROR - fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
;
; Examples:
;
; - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
; - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors except for notices
;
error_reporting = E_ALL; display all errors, warnings and notices

Με την ρύθμιση που παρουσιάζεται στην παραπάνω παράθεση η php θα εμφανίζει όλα τα λάθη. Άρα αρκεί εμείς να αλλάξουμε την πρόταση error_reporting σύμφωνα με τις ανάγκες μας. Αν για πράδειγμα γράψουμε error_reporting=E_ALL & ~E_NOTICE & ~E_WARNING; η php θα εμφανίζει όλα τα λάθη εκτός από τα WRNING και τα NOTICES.

Στην περίπτωση που θέλουμε να αποκρύψουμε την εμφάνιση προειδοποιήσεων σε μεμονομένες εντολές του κώδικά μας, δεν χρειάζεται να αλλάξουμε τις ρυθμίσεις του php.ini, αρκεί μόνο να χρησιμοποιούμε το σύμβολο @ πριν από την εντολή της οποίας δεν επιθημούμε να εμφανιστούν οι προειδοποιήσεις.

 

Σχετικα tutorials

Ρυθμίσεις Apache και PHP για το Drupal
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Greece
This Work, Edutorials, is licensed under a CC BY-NC-SA license, although certain works referenced herein may be separately licensed.