Skillnader jämfört med andra SAPIs

Från Wiki.linux.se
Version från den 3 september 2024 kl. 14.41 av Admin (diskussion | bidrag) (→‎Sidslut)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

CLI SAPI skiljer sig på flera noterbara sätt jämfört med andra SAPIs:

  • Till skillnad från CGI SAPI, skriver CLI inte ut några headers.
  • Även om CGI SAPI tillhandahåller ett sätt att undertrycka HTTP-headers finns det ingen motsvarande möjlighet i CLI SAPI.
  • CLI startas upp i tyst läge som standard, men -q och --no-header switcharna behålls för kompatibilitets skull så att äldre CGI-skript kan användas.
  • Den ändrar inte arbetsmappen till skriptets mapp (-C och --no-chdir switchar behålls för kompatibilitet).
  • Felmeddelanden är i klartext (ingen HTML-formatering).

Det finns vissa php.ini-direktiv som överskrivs av CLI SAPI eftersom de inte är meningsfulla i skal-miljöer:

Direktiv Standardvärde i CLI SAPI Kommentar
html_errors false Standardinställt till falskt för att det kan vara svårt att läsa felmeddelanden i skal-miljön.
implicit_flush true I en skal-miljö är det vanligtvis önskvärt att utdata, som från print, echo och liknande, visas omedelbart och inte hålls i en buffert. Trots detta är det fortfarande möjligt att använda utdatapuffring för att fördröja eller manipulera standardutdata.
max_execution_time 0 (obegränsat) PHP i en skal-miljö används ofta för ett mycket mer varierat utbud av ändamål än typiska webbaserade skript, och eftersom dessa kan köras under mycket långa perioder, är den maximala körningstiden inställd på obegränsad.
register_argc_argv true Att sätta detta till true innebär att skript som körs via CLI SAPI alltid har tillgång till argc (antal argument som skickas till applikationen) och argv (array av de faktiska argumenten).

PHP-variablerna $argc och $argv sätts automatiskt till lämpliga värden när CLI SAPI används. Dessa värden kan också hittas i $_SERVER-arrayen, till exempel: $_SERVER['argv'].

output_buffering false Output buffering-funktionerna är tillgängliga även om inställningen är hårdkodad till falsk.
max_input_time false PHP CLI stöder inte GET, POST eller filuppladdningar.

Observera:

  • Dessa direktiv kan inte initialiseras med ett annat värde från konfigurationsfilen php.ini. De kan dock ändras under körning.
  • Det rekommenderas att ställa in ignore_user_abort för kommandoradsskript.

CLI SAPI ändrar inte den aktuella katalogen till den katalog där skriptet körs.

Exempel #1 Visar skillnaden till CGI SAPI: <?php // Vårt enkla testprogram som heter test.php echo getcwd(), "\n"; ?> Med CGI-versionen, blir utmatningen:

$ pwd
/tmp

$ php -q another_directory/test.php
/tmp/another_directory

Det visar tydligt att PHP ändrar sin nuvarande katalog till skriptets katalog.

Med CLI SAPI blir det:

$ pwd
/tmp

$ php -f another_directory/test.php
/tmp

Detta tillåter större flexibilitet när man skriver skalverktyg i PHP.

Observera:

  • CGI SAPI stöder detta beteende i CLI SAPI genom att använda -C-switchen när det körs från kommandoraden.


Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/features.commandline.differences.php

PHP

Funktioner


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp.se som har sponsrat Linux.se med webserver.