5D Sia: PHP - Come disabilitare la visualizzazione e il log degli errori da codice


PHP - Come disabilitare la visualizzazione e il log degli errori da codice


Ogni sviluppatore, amministratore di sistema o webmaster che lavori o abbia lavorato con PHP conosce perfettamente che il metodo migliore per effettuare un debug rapido su uno script o pagina realizzata con il popolare Hypertext Preprocessor è quello di impostare i valori opportuni delle direttive error_reporting, display_errors e/o log_errors contenute all'interno del file PHP.INI.

Ecco un tipico esempio di configurazione per un web server di produzione:

  1. La prima istruzione chiede a PHP di inserire nel report degli errori tutte le tipologie di errore e avviso, eccezion fatta per quelli riconducibili a problematiche appartenenti alle tipologie DEPRECATED e STRICT: nello specifico, gli avvisi DEPRECATED sono relativi a istruzioni e funzioni prossime alla dismissione e che potrebbero quindi smettere di funzionare in future versioni di PHP, mentre gli avvisi STRICT sono relativi a codice che, pur funzionante, potrebbe causare problemi di interoperabilità o forward compatibility con altre porzioni di codice.
  2. La seconda istruzione indica a PHP di non mostrare gli errori a schermo, ovvero all'utente finale: si tratta di un comportamento quasi scontato negli ambienti di produzione, per ovvie ragioni di sicurezza e di "privacy" legate al funzionamento (o non funzionamento!) dei nostri script.
  3. La terza e ultima istruzione indica a PHP di effettuare il log degli errori in un luogo sicuro, come STDERR o un file memorizato in locale, il cui percorso andrà poi specificato con una ulteriore direttiva error_log.

Tutto ciò premesso, come possiamo fare per effettuare un override di queste impostazioni da codice? Ad esempio, è possibile modificare il comportamento predefinito impostato mediante i valori mostrati in precedenza per far visualizzare gli errori a schermo all'interno di una singola pagina PHP, senza che questo abbia impatto anche su tutte le altre pagine?

La risposta, fortunatamente, è si, a patto che il nostro server (e/o il nostro provider) non abbia bloccato l'utilizzo della funzione ini_set() , che consente per l'appunto di modificare la maggior parte delle opzioni di configurazione di PHP a livello di codice.

Ecco un esempio di come potremmo fare per realizzare quanto descritto sopraLa funzione ini_set() è disponibile per tutte le principali versioni di PHP (PHP 4.x, PHP 5.x, PHP 7.x). Ovviamente, i cambiamenti ottenuti saranno validi per tutto il ciclo di vita del singolo processo PHP, dal momento in cui esegue quella porzione di codice fino al termine dello stesso: questo significa che, se la pagina contiene una serie di include - e/o fa parte di un include a sua volta - la modifica varrà anche per tutti gli altri script collegati: a meno che, ovviamente, non vi siano altri comandi ini_set() che intervengano su quelle medesime opzioni effettuando un override ulteriore.

Fonte originale: https://www.ryadel.com/php-come-disabilitare-la-visualizzazione-e-il-log-degli-errori-da-codice/


Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)