首先一個問題:在命令行下執行:php -r 'echo 12;'php
控制檯會打印出 12;shell
這個過程不是很奇妙麼,我輸入的是shell命令,可是執行的倒是php腳本。php腳本執行完成以後的輸出還能在控制檯輸出。windows
那在這個shell命令(控制檯命令)和php中間必定有一種接口,能將shell的參數,代碼,等轉換成php,而後將php的輸出轉換成shell的輸出。這個接口就叫作SAPI(Server Application Programimg Interface)。它就至關於PHP外部環境的代理器。服務器
那麼因爲PHP能夠應用在終端上,也能夠應用在Web服務器中,因此呢,應用在終端上的SAPI就叫作CLI SAPI,應用在Web服務器中的就叫作CGI SAPI。在windows下安裝php你會看到兩個exe:php.exe和php-cgi.exe這個就對應的是這兩種SAPI。再好比,在控制檯上使用php -v,你就會發現PHP的版本信息中有個(cli)標示,就表明你這裏的php應用程序使用的是cli SAPI。.net
關於CLI SAPI:手冊上有很詳細的說明:http://php.net/manual/zh/features.commandline.php命令行