Rozdiely medzi CLI a CGI
PHP môže bežať v rôznych prostrediach. Najbežnejším prostredím je CGI, ktoré sa spustí, keď PHP spracuje požiadavku HTTP. Skript PHP je však možné spustiť aj z terminálu, v tomto prípade ide o takzvanú úlohu CLI (Command-line interface).
Najdôležitejšie rozdiely medzi CLI a CGI
- Na rozdiel od
CGI SAPI,CLIštandardne nezapisuje na výstup žiadne hlavičky. - Niektoré direktívy
php.inisú vCLI SAPIprepísané, pretože v prostredí shellu nemajú význam: html_errors: CLI má predvolenú hodnotuFALSE.implicit_flush: predvolená hodnota CLI jeTRUEmax_execution_time: predvolená hodnota CLI je0(neobmedzené)register_argc_argv: predvolená hodnota CLI jeTRUE- Skript môže prijímať argumenty príkazového riadku! Premenná
$argcudáva počet argumentov odovzdaných aplikácii. A pole$argvposkytuje pole skutočných argumentov - Pre prostredie shellu sú definované 3 nové konštanty:
STDIN,STDOUT,STDERR. Všetky sú spracovateľmi súborov pre príslušné zariadenie shell. NapríkladSTDINje obsluha súboru prefopen('php://stdin', 'r'). Riadok zSTDINmôžete prečítať takto:$strLine = trim(fgets(STDIN));.STDINje už pre vás definovaný pomocouPHP CLI. - PHP CLI nemení aktuálny adresár na adresár vykonávaného skriptu. Aktuálny adresár pre skript bude adresár, v ktorom spustíte príkaz PHP CLI.
- Pre CLI PHP je k dispozícii množstvo UŽITOČNÝCH možností. Ktoré vám umožnia získať cenné informácie o nastaveniach php, vašom php skripte alebo ho spustiť v rôznych režimoch.
- V PHP 5 došlo k určitým zmenám v názvoch súborov CLI a CGI. V PHP 5 bola verzia CGI premenovaná na
php-cgi.exe(predtýmphp.exe) a verzia CLI sa teraz nachádza v hlavnom adresári (predtýmcli/php.exe). - V PHP 5 bol zavedený aj nový režim:
php-win.exe. Táto verzia je ekvivalentná verzii CLI, až na to, že vphp-winsa nič nevypisuje, a teda neposkytuje žiadnu konzolu (na obrazovke sa nezobrazuje žiadny "dos box"). Toto správanie je podobné ako priPHP GTK.