Różnice między CLI a CGI
PHP może działać w różnych środowiskach. Najbardziej powszechnym środowiskiem jest CGI, które jest uruchamiane, gdy PHP przetwarza żądanie HTTP. Możliwe jest jednak również uruchomienie skryptu PHP z poziomu Terminala, w tym przypadku jest to tzw. zadanie CLI (Command-line interface).
Najważniejsze różnice między CLI a CGI
- W przeciwieństwie do
CGI SAPI,CLIdomyślnie nie zapisuje żadnych nagłówków na wyjściu. - Istnieją pewne dyrektywy
php.ini, które są nadpisane wCLI SAPI, ponieważ są bez znaczenia w środowisku powłoki: html_errors: Domyślnie CLI ustawia wartośćFALSE.implicit_flush: domyślną wartością CLI jestTRUE.max_execution_time: domyślną wartością CLI jest0(bez ograniczeń)register_argc_argv: domyślną wartością CLI jestTRUE.- Skrypt może przyjmować argumenty z wiersza poleceń! Zmienna
$argcpodaje liczbę argumentów przekazanych do aplikacji. Pole$argvzawiera tablicę rzeczywistych argumentów - Zdefiniowano 3 nowe stałe dla środowiska powłoki:
STDIN,STDOUT,STDERR. Wszystkie są urządzeniami obsługującymi pliki dla odpowiedniego urządzenia powłoki. Na przykład,STDINjest obsługą pliku dlafopen('php://stdin', 'r'). Możesz więc odczytać linię zSTDINw następujący sposób:$strLine = trim(fgets(STDIN));. NumerSTDINjest już zdefiniowany za pomocąPHP CLI. - PHP CLI nie zmienia katalogu bieżącego na katalog wykonywanego skryptu. Bieżącym katalogiem dla skryptu będzie katalog, w którym uruchomiono polecenie PHP CLI.
- W PHP CLI dostępnych jest wiele użytecznych opcji. Dzięki temu można uzyskać cenne informacje o konfiguracji php, skrypcie php lub uruchomić go w różnych trybach.
- W PHP 5 wprowadzono pewne zmiany w nazewnictwie plików CLI i CGI. W PHP 5 wersja CGI została przemianowana na
php-cgi.exe(dawniejphp.exe), a wersja CLI znajduje się teraz w katalogu głównym (dawniejcli/php.exe). - W PHP 5 wprowadzono także nowy tryb:
php-win.exe. Jest to odpowiednik wersji CLI, z tą różnicą, że wphp-winnic nie jest drukowane, a więc nie ma konsoli (na ekranie nie jest wyświetlane "okienko dosowe"). To zachowanie jest podobne do zachowaniaPHP GTK.