Ciao a tutti, dovrei fare questa cosa, cioè presentare in caso di problema grave un messaggio di errore esplicativo per chi programma, ma senza specificare (in produzione) percorsi o dipendenze del programma in esecuzione.
Per fare questo solitamente si throw new \Exception e si inserisce un messaggio associato che da indicazioni sull'errore mostrato. Come nell'esempio qui sotto:
prova.php
prova.inc.phpCodice PHP:
<?php
try {
include_once __DIR__ . '/prova.inc.php';
} catch(Exception $e) {
echo $e;
exit;
}
?>
il quale restituisce la seguente frase:Codice PHP:
<?php
throw new Exception("Si è verificato un errore nel modulo");
Ecco la parte dopo appare sempre in modo automatico, dando indicazioni sulla pagina dove si è verificato il problema e la riga (ed altro).Exception: Si è verificato un errore nel modulo in C:\apache\users\marco\prove\apoleg-2\prova.inc.php:3 Stack trace: #0 C:\apache\users\marco\prove\apoleg-2\prova.php(10): include_once() #1 {main}
Queste indicazioni sono utili sia al programmatore che ad un eventuale attaccante, che così conoscerà al volo: la struttura delle directory del server, il tipo di webserver (apache, in qualche caso pure la versione dello stesso) e infine indicazioni sui file in causa, il tipo di errore, ecc...
Mi chiedo ora se si riesce a eliminare certe informazioni che in produzione sono pericolose.