首先一個問題:在命令行下執行:php -r 'echo 12;'
控制台會打印出 12;
這個過程不是很奇妙么,我輸入的是shell命令,但是執行的卻是php腳本。php腳本執行完成之后的輸出還能在控制台輸出。
那在這個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。
關於CLI SAPI:手冊上有很詳細的說明:http://php.net/manual/zh/features.commandline.php