Chcę, aby błąd logowania się w PHP CodeIgniter. Jak włączyć rejestrowanie błędów?
Mam parę pytań:
- Jakie są wszystkie kroki, aby zarejestrować błąd?
- Jak tworzony jest plik dziennika błędów?
- Jak przesłać komunikat o błędzie do pliku dziennika (gdy wystąpi błąd)?
- Jak wysłać wiadomość e-mail z tym błędem na adres e-mail?
Aby po prostu umieścić linię w dzienniku błędów serwera, użyj funkcji PHP error_log (). Jednak ta metoda nie spowoduje wysłania wiadomości e-mail.
Po pierwsze, aby wywołać błąd:
trigger_error("Error message here", E_USER_ERROR);
Domyślnie zostanie to zapisane w pliku dziennika błędów serwera. Zobacz dyrektywę ErrorLog dla Apache. Aby ustawić własny plik dziennika:
ini_set('error_log', 'path/to/log/file');
Zwróć uwagę, że wybrany plik dziennika musi już istnieć i umożliwiać zapisywanie przez proces serwera. Najprostszym sposobem udostępnienia pliku do zapisu jest uczynienie użytkownika serwera właścicielem pliku. (Użytkownikiem serwera może być nikt, _www, apache lub coś innego, w zależności od dystrybucji systemu operacyjnego).
Aby wysłać błąd e-mailem, musisz skonfigurować niestandardową procedurę obsługi błędów:
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);
Więcej informacji można znaleźć w odpowiedniej dokumentacji PHP .
źródło
Upewnij się również, że zezwoliłeś Codeigniter na rejestrowanie typów komunikatów, które chcesz w pliku konfiguracyjnym.
to znaczy
$config['log_threshold'] = [log_level ranges 0-4];
źródło
Więcej o pytaniu w części 4 Jak wysłać e-mailem ten błąd na adres e-mail? Funkcja error_log również ma miejsce docelowe dla e-maili. http://php.net/manual/en/function.error-log.php
Agha, tutaj znalazłem przykład, który pokazuje użycie. Wyślij wiadomość o błędzie pocztą e-mail za pomocą error_log ()
error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);
źródło
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/
źródło