PHP Manual
/
Administracja serwerem

Różnice między CLI a CGI

15. 10. 2021

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, CLI domyślnie nie zapisuje żadnych nagłówków na wyjściu.
  • Istnieją pewne dyrektywy php.ini, które są nadpisane w CLI SAPI, ponieważ są bez znaczenia w środowisku powłoki:
    • html_errors: Domyślnie CLI ustawia wartość FALSE.
    • implicit_flush: domyślną wartością CLI jest TRUE.
    • max_execution_time: domyślną wartością CLI jest 0 (bez ograniczeń)
    • register_argc_argv: domyślną wartością CLI jest TRUE.
  • Skrypt może przyjmować argumenty z wiersza poleceń! Zmienna $argc podaje liczbę argumentów przekazanych do aplikacji. Pole $argv zawiera 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, STDIN jest obsługą pliku dla fopen('php://stdin', 'r'). Możesz więc odczytać linię z STDIN w następujący sposób: $strLine = trim(fgets(STDIN));. Numer STDIN jest 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 (dawniej php.exe), a wersja CLI znajduje się teraz w katalogu głównym (dawniej cli/php.exe).
  • W PHP 5 wprowadzono także nowy tryb: php-win.exe. Jest to odpowiednik wersji CLI, z tą różnicą, że w php-win nic nie jest drukowane, a więc nie ma konsoli (na ekranie nie jest wyświetlane "okienko dosowe"). To zachowanie jest podobne do zachowania PHP GTK.

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
4.
Status:
All systems normal.
2024