PHP besteht aus 5 Teilen.
Code:
+------------------------------------------------------------+
| |
| +------------------------------------------------+ |
| | +----------+ +---------+ +-------+ +---------+ | |
| | | Standard | | Session | | MySQL | | Sockets | | |
| | +----------+ +---------+ +-------+ +---------+ | |
| | Extensions | |
| +------------------------------------------------+ |
| T |
| S +----------------------+ +----------------------+ |
| R | PHP Core | | Zend Engine | |
| M +----------------------+ +----------------------+ |
| |
| +------------------------------------------------+ |
| | SAPI (Server API) | |
| +------------------------------------------------+ |
| |
+------------------------------------------------------------+
Das SAPI koordiniert den Lifecycle eines PHP-Prozesses (MINIT et al.) und bildet die Schnittstelle zu einem Server (z.B. Apache durch mod_php.so). Und jetzt kommt der Clou: Das CLI ist sozusagen auch nur ein Server! Das heißt /usr/bin/php spricht mit der SAPI genau so wie mod_php.so.
Die Verwirrung rüht imho aus dem falschen S in SAPI. Ursprünglich war dieses Interface wirklich für Server gedacht. Es hat sich aber als so gut erwiesen, dass man es mehr oder weniger zum allgemeinen Interface machte. Das war in PHP 4.0.2. Hier liegt der Hund begraben. Man hätte es damals in API umtaufen sollen.
Übrigens gibt es auch noch eine Embed SAPI (--enable-embed). Das ist die selbe API mit ein paar zusätzlichen Macros.
TSRM = Thread Safe Resource Management
Zend Engine = Compilation, Execution, Resource Allocation
PHP Core = Request Management, Low level operations (I/O streams, Netzwerk und Dateien), error handling, startup/shutdown triggering