PHP Manual
/
Serveradministration

Forskelle mellem CLI og CGI

15. 10. 2021

PHP kan køre i forskellige miljøer. Det mest almindelige miljø er `CGI`, som kører, når PHP behandler en HTTP-forespørgsel. Det er dog også muligt at køre et PHP-script fra terminalen, og i så fald er det en såkaldt CLI-opgave (Command-line interface).

De vigtigste forskelle mellem CLI og CGI

  • I modsætning til CGI SAPI skriver CLI som standard ikke nogen headere til output.
  • Der er nogle php.ini-direktiver, som er tilsidesat i CLI SAPI, fordi de er meningsløse i et shell-miljø:
    • html_errors: CLI har som standardindstilling FALSE.
    • implicit_flush: standard CLI-værdien er TRUE.
    • max_execution_time: standard CLI-værdien er 0 (ubegrænset)
    • register_argc_argv: standard CLI-værdien er TRUE.
  • Scriptet kan tage imod kommandolinjeargumenter! Variablen $argc angiver antallet af argumenter, der er sendt til programmet. Og feltet $argv giver dig et array af de faktiske argumenter
  • Der er 3 nye konstanter defineret for shell-miljøet: STDIN, STDOUT, STDERR. Alle er filhåndteringsenheder for den tilsvarende shell-enhed. F.eks. er STDIN en filhåndteringsprogram for fopen('php://stdin', 'r'). Så du kan læse en linje fra STDIN på følgende måde: $strLine = trim(fgets(STDIN));. STDIN er allerede defineret for dig ved hjælp af PHP CLI.
  • PHP CLI ændrer ikke den aktuelle mappe til mappen for det script, der udføres. Den aktuelle mappe for scriptet vil være den mappe, hvor du kører PHP CLI-kommandoen.
  • Der er en række nyttige indstillinger til rådighed for PHP CLI. Hvilket giver dig mulighed for at få værdifulde oplysninger om din php-opsætning, dit php-script eller køre det i forskellige tilstande.
  • I PHP 5 er der sket nogle ændringer i CLI- og CGI-filnavne. I PHP 5 er CGI-versionen blevet omdøbt til php-cgi.exe (tidligere php.exe), og CLI-versionen ligger nu i hovedmappen (tidligere cli/php.exe).
  • Der er også blevet indført en ny tilstand i PHP 5: php-win.exe. Dette svarer til CLI-versionen, bortset fra at der i php-win ikke udskrives noget, og der er således ingen konsol (der vises ingen "dos box" på skærmen). Denne opførsel svarer til 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