2012-01-19 17 views
8

Utilizzo PHP 5.3, CentOS 6.2, httpd 2.2.15, NetBeans 7.0.1 (eseguito in remoto tramite ftp).Interrompe la stampa dei messaggi di errore php nel browser

Desidero interrompere la stampa dei messaggi di errore nel browser, è sufficiente che stampi sul file error_log di httpd.

Ho pensato eseguendo try/catch deciderei da solo come gestire l'errore, ma viene comunque stampato sia per error_log che per browser.

function smic_gettext($phrase){ 

     try{ 
      $tr_text = $this->language_array[$phrase]; 

     } catch(Exception $e){ 
      error_log("Couldn't find any entry in the translation file for ".$phrase.". ".$e); 
      return $phrase; 

     } 

     return $tr_text; 
    } 

Come devo configurare per interrompere questo comportamento?

Ho provato a impostare display_errors = Off e display_errors = 0 in php.ini. Nessuna differenza (ho riavviato httpd).

+1

set 'display_errors = off' – goat

+0

** ** ambienti di produzione dovrebbero avere errori PHP/avvisi disattivata nel file' php.ini', e solo la registrazione per registrare i file – Jakub

+0

Nota a margine: gli errori in PHP non sono eccezioni (come ad esempio in Java), ma c'è un modo per convertirli in eccezioni e gestirli di conseguenza. Vedere http://www.php.net/manual/en/class.errorexception.php – Mchl

risposta

9
display_errors = Off 

in php.ini vi permetterà di mantenere i vostri errori di syslog , ma non scrivere nulla per il browser.

+0

Mi piacerebbe farlo per tutti gli script, quindi configurare php.ini sembra essere il modo migliore. Ho provato display_error = Off e display_error = 0, riavvio di httpd ma nessuna differenza. – Nicsoft

+0

Hai provato "display_error", ma la parola chiave è "display_errors" –

+0

Ci scusiamo, è solo un refuso nel mio commento, ho usato display_errors. – Nicsoft

3

Prova ad aggiungere quanto segue alla parte superiore del vostro script:

ini_set('display_errors',0); 

Questo dovrebbe impostare la segnalazione degli errori a nessuno e sovrascrivere le impostazioni server php.ini (che a volte ignora il tuo error_reporting (0))

+0

error_reporting (0) disabiliterà la registrazione nel file e l'impostazione – Mchl

+0

impostando error_reporting su 0 farà sì che non vengano registrati errori. Non consiglierei questo in un ambiente di produzione. Impostare 'ini_set ('display_errors', 0);' dovrebbe essere sufficiente. – klennepette

+0

Mchl e klennepette, grazie per l'assistenza. Nicsoft, hanno ragione, solo ini_set ('display_errors', 0); dovrebbe fare il lavoro – AlexC

1
+0

Mi piacerebbe farlo per tutti gli script, quindi la configurazione di php.ini sembra essere il modo migliore. Ho provato show_errors = Off e display_errors = 0, riavvio di httpd ma nessuna differenza. – Nicsoft

+0

è 'display_errors' not' display_error' – Mchl

+0

In realtà, questo è quello che ho fatto, aggiornato il mio commento. – Nicsoft

7

Wheter o meno gli errori di PHP vengono inviati al fronte il servizio è determinato dall'impostazione php.ini: display_errors. Impostalo su Off per evitare che venga emesso. Questo file si trova di solito sotto /etc/php.ini o /etc/php5/php.ini

+0

@DaveRandom OP ha menzionato che si trova su CentOS e su CentOS di solito è il percorso. – Oldskool

+0

Oh hai ragione. Scusa, il mio male ... +1 :-) – DaveRandom

+0

Mi piacerebbe farlo per tutti gli script quindi configurare php.ini sembra essere il modo migliore. Ho provato display_error = Off e display_error = 0, riavvio di httpd ma nessuna differenza. – Nicsoft

3

È necessario modificare l'impostazione display_errors php.ini per off o 0. È possibile farlo nel vostro php.ini effettivi, con un file .htaccess, o chiamando questo all'inizio dello script:

ini_set('display_errors', '0'); 
+0

Grazie, questo ha aiutato molto. – JugglingBob

0

FWIW, mentre display_errors = off è la linea config-file corretto come altri hanno detto, su DreamHost (ND, eventualmente, altre installazioni), va in

$HOME/.php/phprc

piuttosto che php .ini (che potrebbe funzionare anche, ma DreamHost - e, ancora, forse altri - supporta phprc).

1

Se l'errore appare solo su una riga è possibile impedire la visualizzazione dell'errore con l'aggiunta del segno @ all'inizio di tale linea.

@YOUR_CUSTOM_COMMAND

Esempio:

@file_get_contents('custom_file.txt'); 
Problemi correlati