Skillnader mellan CLI och CGI
PHP kan köras i olika miljöer. Den vanligaste miljön är CGI, som körs när PHP behandlar en HTTP-förfrågan. Det är dock också möjligt att köra ett PHP-skript från terminalen, vilket i så fall är en så kallad CLI-uppgift (Command-line interface).
De viktigaste skillnaderna mellan CLI och CGI
- Till skillnad från
CGI SAPIskriverCLIsom standard inga rubriker till utdata. - Det finns några
php.ini-direktiv som åsidosätts iCLI SAPIeftersom de är meningslösa i en skalmiljö: html_errors: CLI har som standardvärdeFALSE.implicit_flush: standardvärdet för CLI ärTRUE.max_execution_time: standardvärdet för CLI är0(obegränsad).register_argc_argv: standardvärdet för CLI ärTRUE.- Skriptet kan ta emot kommandoradsargument! Variabeln
$argcanger antalet argument som skickas till programmet. Och fältet$argvger dig en matris med faktiska argument. - Det finns tre nya konstanter definierade för skalmiljön:
STDIN,STDOUT,STDERR. Alla är filhanterare för motsvarande skalenhet. Till exempel ärSTDINen filhanterare förfopen('php://stdin', 'r'). Så du kan läsa en rad frånSTDINpå följande sätt:$strLine = trim(fgets(STDIN));.STDINär redan definierad för dig med hjälp avPHP CLI. - PHP CLI ändrar inte den aktuella katalogen till katalogen för det skript som körs. Den aktuella katalogen för skriptet är den katalog där du kör PHP CLI-kommandot.
- Det finns ett antal användbara alternativ för PHP CLI. Med dessa kan du få värdefull information om din php-installation, ditt php-skript eller köra det i olika lägen.
- I PHP 5 har det gjorts vissa ändringar i filnamnen för CLI och CGI. I PHP 5 har CGI-versionen bytt namn till
php-cgi.exe(tidigarephp.exe) och CLI-versionen finns nu i huvudkatalogen (tidigarecli/php.exe). - Ett nytt läge har också införts i PHP 5:
php-win.exe. Detta är likvärdigt med CLI-versionen, förutom att inget skrivs ut iphp-winoch att det därför inte finns någon konsol (ingen "dosbox" visas på skärmen). Detta beteende liknarPHP GTK.