Forskelle mellem CLI og CGI
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 SAPIskriverCLIsom standard ikke nogen headere til output. - Der er nogle
php.ini-direktiver, som er tilsidesat iCLI SAPI, fordi de er meningsløse i et shell-miljø: html_errors: CLI har som standardindstillingFALSE.implicit_flush: standard CLI-værdien erTRUE.max_execution_time: standard CLI-værdien er0(ubegrænset)register_argc_argv: standard CLI-værdien erTRUE.- Scriptet kan tage imod kommandolinjeargumenter! Variablen
$argcangiver antallet af argumenter, der er sendt til programmet. Og feltet$argvgiver 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. erSTDINen filhåndteringsprogram forfopen('php://stdin', 'r'). Så du kan læse en linje fraSTDINpå følgende måde:$strLine = trim(fgets(STDIN));.STDINer allerede defineret for dig ved hjælp afPHP 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(tidligerephp.exe), og CLI-versionen ligger nu i hovedmappen (tidligerecli/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 iphp-winikke udskrives noget, og der er således ingen konsol (der vises ingen "dos box" på skærmen). Denne opførsel svarer tilPHP GTK.