2011-11-04 2 views
11

Sto cercando di includere un file e catturarlo se il file non esiste/non può essere aperto. Avrei pensato che una semplice dichiarazione try/catch avrebbe funzionato, ma PHP sembra ignorarlo completamente, ed errori.PHP catch a failed include

Qualche idea? So che ci sono altre domande come questa su StackOverflow, li ho visti, ma nessuno di loro sembra avere una risposta adeguata e funzionante.

risposta

23

È possibile controllare il valore di ritorno di includere per vedere se non è riuscito o no:

if((@include $filename) === false) 
{ 
    // handle error 
} 

Noterete ho inserito l'operatore soppressione di errore (@) per nascondere i messaggi di errore standard vengano visualizzati.

+2

utilizzando @ è una soluzione molto sporco – Nicolas

+8

Penso utilizzando @, l'operatore di controllo degli errori è perfettamente bene, se si gestisce l'errore. Si limita a fare in modo che il brutto errore di errore non venga emesso se la configurazione ha attivato tali avvisi. – drew010

+0

Sì, la ragione esatta per cui voglio farlo è essere in grado di gestire l'errore;) –

4

Dal include() restituisce false in caso di errore, è sufficiente controllare se restituisce true e quindi fare qualcosa come die() o mostrare un errore.

if (!include('page.php')) 
    die('Error.'); 
+3

Se stai per 'die', potresti anche usare [require] (http://php.net/ manual/en/function.require.php) però. –

+0

Sì, buon punto. – Simone

+0

Questo mostra ancora l'avviso php. –