Rozdíly mezi CLI a CGI
PHP může běžet v různých prostředích. Nečastější prostředí je CGI, které se spustí, když PHP zpracovává HTTP request. PHP script je ale také možné spustit z Terminálu, v takovém případě jde o tzv. CLI úlohu (Command-line interface).
Nejdůležitější rozdíly mezi CLI a CGI
- Na rozdíl od
CGI SAPInezapisujeCLIve výchozím nastavení na výstup žádné hlavičky. - Existují některé direktivy
php.ini, které jsou vCLI SAPIpřepsány, protože v prostředí shellu nemají smysl: html_errors: Výchozí hodnota CLI jeFALSEimplicit_flush: výchozí hodnota CLI jeTRUEmax_execution_time: výchozí hodnota CLI je0(neomezeně)register_argc_argv: výchozí hodnota CLI jeTRUE- Skript může mít argumenty příkazového řádku! Proměnná
$argcvám poskytuje počet argumentů předávaných aplikaci. A pole$argvvám poskytne pole skutečných argumentů - Pro prostředí shellu jsou definovány 3 nové konstanty:
STDIN,STDOUT,STDERR. Všechny jsou obsluhami souborů pro odpovídající zařízení shellu. NapříkladSTDINje obsluha profopen('php://stdin', 'r'). Řádek zeSTDINtedy můžete přečíst takto:$strLine = trim(fgets(STDIN));.STDINje již definován za vás pomocíPHP CLI. - PHP CLI nemění aktuální adresář na adresář prováděného skriptu. Aktuálním adresářem pro skript by byl adresář, ve kterém spustíte příkaz PHP CLI.
- Pro PHP CLI je k dispozici řada UŽITEČNÝCH voleb. Které vám umožní získat některé cenné informace o vašem nastavení php, vašem php skriptu nebo ho spustit v různých režimech.
- V PHP 5 došlo k některým změnám v názvech souborů CLI a CGI. V PHP 5 byla verze CGI přejmenována na
php-cgi.exe(dřívephp.exe) a verze CLI se nyní nachází v hlavním adresáři (dřívecli/php.exe). - V PHP 5 byl také zaveden nový režim:
php-win.exe. Ten se rovná verzi CLI, s tím rozdílem, že vephp-winse nic nevypisuje, a neposkytuje tedy žádnou konzoli (na obrazovce se nezobrazuje "dos box"). Toto chování je podobné jako uPHP GTK.