PHP ima dva vzporedna sistema za težave: tradicionalne napake (opozorila, obvestila, usodne napake) in izjeme (na objektih temelječe, ujemljive s try/catch). Sodobni PHP veliko tega enotno predstavlja pod hierarhijo Throwable, dobra praksa pa daje prednost izjemam.
Tradicionalne ravni napak
E_NOTICE → minor issues (e.g. using an undefined variable) — script continues
E_WARNING → non-fatal problems (e.g. include of a missing file) — continues
E_ERROR / Fatal → serious errors (e.g. calling an undefined function) — script HALTS
E_DEPRECATED → use of deprecated features
