Come eseguire la registrazione degli errori in CodeIgniter (PHP)


92

Voglio la registrazione degli errori in PHP CodeIgniter. Come si abilita la registrazione degli errori?

Ho alcune domande:

  1. Quali sono tutti i passaggi per registrare un errore?
  2. Come viene creato un file di registro degli errori?
  3. Come inserire il messaggio di errore nel file di registro (ogni volta che si verifica un errore)?
  4. Come si invia quell'errore a un indirizzo di posta elettronica?

Risposte:


180

CodeIgniter ha alcune funzioni di registrazione degli errori integrate.

  • Rendi la tua cartella / application / logs scrivibile
  • In /application/config/config.php imposta
    $config['log_threshold'] = 1;
    o usa un numero più alto, a seconda di quanti dettagli vuoi nei tuoi log
  • Uso log_message('error', 'Some variable did not contain a value.');
  • Per inviare un'e-mail è necessario estendere il metodo della classe CI_Exceptions principale log_exceptions(). È possibile farlo da soli o utilizzare questo . Maggiori informazioni sull'estensione del nucleo qui

Vedi http://www.codeigniter.com/user_guide/general/errors.html



Ci sono implicazioni per la sicurezza per questo?
Aakil Fernandes

Questo scarica i dati in un file php il cui nome file è nel formato: log- [Ymd H: i: s] o qualsiasi valore impostato sulla configurazione della chiave log_date_format definita nel file di configurazione. Finché non riesci a registrare / scaricare dati sensibili, dovrebbe essere abbastanza sicuro. Questo file è relativo a una pagina index.html per impostazione predefinita, quindi ovviamente i file php generati non sarebbero accessibili pubblicamente, ma non lo saprai mai. Assicurati di adottare tutte queste precauzioni se cambi la directory application / logs predefinita.
Vincent Edward Gedaria Binua

7
Rendi scrivibile la tua cartella / application / logs <<< che mi ha aiutato
user1312695

Quando ho impostato "$ config ['log_threshold'] = 1;", non ho ricevuto alcun log nella mia cartella / application / logs. Tuttavia, quando ho impostato "$ config ['log_threshold'] = 3", è apparso un file di registro. Spero che questo ti aiuti. Grazie! Pace.
masarapmabuhay

25

Per inserire semplicemente una riga nel registro degli errori del server, utilizzare la funzione error_log () di PHP. Tuttavia, quel metodo non invierà un'e-mail.

Innanzitutto, per attivare un errore:

trigger_error("Error message here", E_USER_ERROR);

Per impostazione predefinita, questo andrà nel file di registro degli errori del server. Vedere la direttiva ErrorLog per Apache. Per impostare il tuo file di registro:

ini_set('error_log', 'path/to/log/file');

Notare che il file di registro scelto deve già esistere ed essere scrivibile dal processo del server. Il modo più semplice per rendere il file scrivibile è rendere l'utente del server il proprietario del file. (L'utente del server potrebbe essere nessuno, _www, apache o qualcos'altro, a seconda della distribuzione del sistema operativo.)

Per inviare l'errore tramite posta elettronica, è necessario impostare un gestore degli errori personalizzato:

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

Si prega di consultare la relativa documentazione PHP per maggiori informazioni.


3

Assicurati inoltre di aver consentito a codeigniter di registrare il tipo di messaggi che desideri in un file di configurazione.

cioè $config['log_threshold'] = [log_level ranges 0-4];



0
In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';

Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.