Явно логические ошибки не может определить НИ ОДИН компилятор. Он может в некоторых случаях уведомить о том, что ВОЗМОЖНО там что-то не так, но явно сказать и определить логическую ошибку не может никто, кроме самого программиста. Остальные все определяются без проблем ещё на этапе интерпритации.
Syntax и Parse это одно и то же, и в php оно называется вторым словом. Fatal еще называется error (по крайней мере отображение задается параметром E_ERROR)Поскольку PHP - язык все-таки интерпретируемый, скрипт может продолжать работу, игнорируя некоторые ошибки. Например, говорят что переменные можно не объявлять. На самом деле обычно необъявленная переменная при первом использовании вызывает ошибку типа Notice, но такая ошибка не мешает работе скрипта. Всего есть 2 вида ошибок, прерывающих выполнение скрипта: Parse и Fatal, первая возникает при нарушении синтаксиса, вторая - когда продолжение скрипта логически невозможно (вызывается несуществующая функция например). Всего 4 типа ошибок: notice, warning, error, parse, при чем последние две - фатальные (прерывают работу скрипта). На самом деле, скрипт проверяется на наличие ошибок до выполнения (прекомпиляция), поэтому скрипт, имеющий фатальные ошибки, вообще не выполняется.