Como fazer o registo de erros no co-Designiter (PHP)
quero o registo de erros no código PHP. Como posso activar o registo de erros?
Tenho algumas perguntas.- Quais são todos os passos para registar um erro?
- Como é criado um ficheiro de registo de erros?
- Como introduzir a mensagem de erro no ficheiro de Registo (sempre que ocorrer um erro)? Como é que se envia esse erro para um endereço de E-mail?
4 answers
O CodeIgniter tem algumas funções de registo de erros incorporadas.
- Faça com que a sua /Aplicação/registos pasta possa ser escrita
- em /application/config / config.conjunto de php
$config['log_threshold'] = 1;
ou usar um número maior, dependendo de quantos detalhes você quer em seus logs - utilizar
log_message('error', 'Some variable did not contain a value.');
- para enviar um e-mail, é necessário estender o método principal da classe CI_Exceptions
log_exceptions()
. Pode fazer isto sozinho ou usar isto . Mais informações sobre a extensão do núcleo Aqui.
Ver http://www.codeigniter.com/user_guide/general/errors.html
Para simplesmente colocar uma linha no registo de erros do servidor, use a função error_ log() do PHP. No entanto, esse método não enviará um e-mail.
Primeiro, para despoletar um erro:
trigger_error("Error message here", E_USER_ERROR);
Por omissão, isto irá para o ficheiro de registo de erros do servidor. Veja a diretiva ([9]) de ErrorLog para Apache. Para definir o seu próprio ficheiro de Registo:
ini_set('error_log', 'path/to/log/file');
Note que o ficheiro de registo que escolher já deve existir e poder ser escrito pelo processo do servidor. A maneira mais simples de fazer o ficheiro writable é fazer o utilizador do servidor o dono do ficheiro. (O usuário do servidor pode ser ninguém, _www, apache, ou qualquer outra coisa, dependendo de sua distribuição de SO.)
Para enviar por e-mail o erro, você precisa configurar um manipulador de erros personalizado:
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('[email protected]', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);
Por favor veja a documentação de PHP relevante para mais informações.
Certifique-se também que permitiu ao codeigniter registar o tipo de mensagens que deseja num ficheiro de configuração.
I. e $config['log_threshold'] = [log_level ranges 0-4];
Mais oin em relação à pergunta parte 4 Como é que se envia esse erro para um endereço de E-mail? A função error_ log também tem destino de E-mail. http://php.net/manual/en/function.error-log.php
Agha, aqui encontrei um exemplo que mostra uma utilização. enviar a mensagem de erros por e-mail usando o error_ log()
error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);