PHP: Hypertext Preprocessorの仕様

PHPはCommon Gateway Interface (CGI) をサポートしており、CGIをサポートするWebサーバ上でPHPスクリプトを実行することができる。この他にもFastCGIを通じてWebサーバから起動したり、利用するWebサーバがモジュール機構を提供していれば、モジュールとしてWebサーバに組み込んだ状態で動作させることが可能である。その為、phpモジュールに脆弱性があった場合、簡単にWebサーバの権限を奪取され、サーバを破壊されることもある。

PHPは、PHP4以降Zend Engineをスクリプト言語を処理するエンジンとして利用している。Zend Engineは、PHP3の開発者によって設立されたZend Technologies Ltd.により開発されたソースコードが公開されているスクリプティングエンジンで、PHP5ではZend Engine 2.0になった。Zend Engineは基本的に1つのプロセスがインタプリタのコンテキストを1つだけ持つものとして設計されている。したがってマルチスレッドを用いたスクリプティングはサポートしていない。

Zend Engineを除くPHP本体は、PHP組み込み関数の実装を含むほか、Webサーバやコマンドラインインタフェースとスクリプティングエンジンの間を仲介するSAPI (Server API)レイヤ、マルチスレッドで動くWebサーバのモジュールとして利用される場合にグローバル変数のセマンティクスを提供するTSRM (Thread Safe Resource Manager)、さまざまなプラットフォームの入出力機構やAPIの差異を吸収するためのStreamsレイヤから成る。

開発者はSAPIの提供するSPIを実装することで、さまざまなWebサーバのモジュールとしてPHPを動作させることができる。標準では以下のWebサーバ用のSAPIが提供されている。