Ce face error_log
Cu tipul implicit (0), mesajul ajunge în jurnalul configurat prin setarea error_log din php.ini (de exemplu /var/log/php_errors.log), cu data și ora în față. Dacă setarea nu există, mesajul ajunge în jurnalul serverului web sau, în linia de comandă, pe ecran (stderr).
Cu tipul 3, mesajul se adaugă la sfârșitul fișierului dat în $destination, exact cum l-ai scris: fără dată și fără linie nouă automată. Tipul 1 trimite mesajul pe email, dar este rar folosit.
Parametri
| Parametru | Descriere |
|---|---|
$message |
Mesajul de scris. |
$message_type |
Opțional. 0 jurnalul PHP, 1 email, 3 adaugă într-un fișier, 4 jurnalul serverului web (SAPI). |
$destination |
Opțional. Fișierul (la tipul 3) sau adresa de email (la tipul 1). |
$additional_headers |
Opțional. Antete suplimentare pentru email (doar tipul 1). |
Ce returnează
true la succes, false la eroare.
Exemple
Exemplul 1: Jurnal propriu, într-un fișier
<?php
function jurnal(string $mesaj): void
{
error_log(date("Y-m-d") . " " . $mesaj . "\n", 3, "aplicatie.log");
}
jurnal("Utilizatorul ana@exemplu.ro s-a autentificat");
jurnal("Plata pentru comanda #1024 a eșuat");
echo file_get_contents("aplicatie.log");
Rezultat posibil (diferă la fiecare rulare)
2026-10-19 Utilizatorul ana@exemplu.ro s-a autentificat
2026-10-19 Plata pentru comanda #1024 a eșuat
Exemplul 2: Jurnalul PHP setat din cod
Cu tipul implicit, PHP adaugă singur data, ora și fusul orar.
<?php
ini_set("error_log", __DIR__ . "/php_errors.log");
error_log("Conexiunea la API-ul de curierat a expirat");
echo file_get_contents(__DIR__ . "/php_errors.log");
Rezultat posibil (diferă la fiecare rulare)
[19-Oct-2026 11:42:07 UTC] Conexiunea la API-ul de curierat a expirat
Exemplul 3: Excepție scrisă în jurnal
<?php
try {
throw new RuntimeException("Fișierul de export nu poate fi scris");
} catch (RuntimeException $e) {
error_log(get_class($e) . ": " . $e->getMessage() . " (linia " . $e->getLine() . ")\n", 3, "erori.log");
echo "A apărut o problemă. Am notat-o.\n";
}
echo file_get_contents("erori.log");
Rezultat
A apărut o problemă. Am notat-o.
RuntimeException: Fișierul de export nu poate fi scris (linia 3)
Greșeli frecvente
- La tipul 3 uiți
\nla final. Toate mesajele ajung pe aceeași linie. - Scrii fișierul de jurnal într-un director public (de exemplu lângă
index.php). Oricine îl poate descărca din browser. Pune-l în afara directorului public.
Comenzi înrudite
set_error_handler: Înlocuiește tratarea standard a avertismentelor și notificărilor PHP cu o funcție scrisă de tine.set_exception_handler: Setează funcția care rulează când o excepție nu este prinsă de niciun bloc catch.error_reporting: Setează ce tipuri de erori raportează PHP (sau doar citește setarea curentă).file_put_contents: Scrie un text într-un fișier. Creează fișierul dacă nu există.