Dodatek B. Pou╛itφ PHP z p°φkazovΘ °ßdky

Mo╛nosti PHP p°i spou╣t∞nφ z p°φkazovΘ °ßdky p°inß╣ejφ mnoho u╛itku, pokud chcete ladit nebo testovat va╣e nastavenφ PHP, hodφ se v╣ak i pro p°φpady, kdy byste rßdi pou╛ili PHP pro jinΘ ·Φely ne╛ WWW skriptovßnφ.

Uv∞domte si, ╛e m∙╛ete v╛dy sm∞rovat v²stup programu PHP do vn∞j╣φho souboru pomocφ znaku >, tak╛e php -q test.php > test.html vytiskne v²stup test.php bez HTTP hlaviΦek do test.html ve stejnΘm adresß°i.

Mo╛nosti p°φkazovΘ °ßdky m∙╛ete vyu╛φvat pouze tehdy, mßte-li (spustiteln²) program PHP. Pokud jste zkompilovali pouze modul do serveru a nemßte na poΦφtaΦi ╛ßdnou CGI verzi, nem∙╛ete p°φkazovou °ßdku pou╛φvat. Pro u╛ivatele Windows je v binßrnφm balφΦku jak serverov² modul, tak spustiteln² soubor nazvan² php.exe.

Tento seznem voleb pro p°φkazovou °ßdku je konzistentnφ s PHP 4.0.6. Aktußlnφ seznam vΦetn∞ jedno°ßdkov²ch popis∙ m∙╛ete zφskat pomocφ parametru -h. V²stup php -h by m∞l vypadat p°ibli╛n∞ takto:
Usage: php [-q] [-h] [-s [-v] [-i] [-f <file>] |  {<file> [args...]}
  -q             Quiet-mode.  Suppress HTTP Header output.
  -s             Display colour syntax highlighted source.
  -f <file>      Parse <file>.  Implies `-q'
  -v             Version number
  -C             Do not chdir to the script's directory
  -c <path>      Look for php.ini file in this directory
  -d foo[=bar]   Define INI entry foo with value 'bar'
  -e             Generate extended information for debugger/profiler
  -z <file>      Load Zend extension <file>.
  -l             Syntax check only (lint)
  -m             Show compiled in modules
  -i             PHP information
  -h             This help

Zde uvßdφme n∞kterΘ z nejd∙le╛it∞j╣φch voleb s detailnφm vysv∞tlenφm.

Tabulka B-1. Volby pro p°φkazovou °ßdku

VolbaPopis
-q PotlaΦφ v²stup HTTP hlaviΦek. Normßln∞ PHP tiskne HTTP hlaviΦky pro volajφcφ program (typicky WWW server) k p°edßnφ prohlφ╛eΦi. P°i pou╛itφ pro aplikace spou╣t∞nΘ z p°φkazovΘ °ßdky nemajφ hlaviΦky smysl.
-s Zobrazφ barevn∞ vysvφcen² zdrojov² soubor s dan²m nßzvem. Je to totΘ╛, jako kdy╛ se zdroj vytiskne pomocφ funkce highlight_file() v PHP skriptu.
-f Parsuje dan² soubor a hledß syntaktickΘ a fatßlnφ chyby. Tato volba implikuje -q. Pou╛ijte pro ladicφ ·Φely (debugging).
-v Zavolßnφm PHP s tφmto p°epφnaΦem si m∙╛ete vypsat Φφslo verze, nap°. 4.0.6.
-C Za normßlnφch okolnostφ PHP m∞nφ pracovnφ adresß° na ten, kde se nachßzφ spou╣t∞n² skript. To nap°φklad umo╛≥uje otvφrat soubory ve stejnΘm adresß°i urΦenφm pouhΘho nßzvu souboru (bez cesty). Pokud byste toto cht∞li potlaΦit, pou╛ijte tuto volbu.
-c Pou╛itφm tohoto argumentu m∙╛ete specifikovat alternativnφ umφst∞nφ souboru php.ini, tak╛e PHP bude hledat konfiguraΦnφ soubor zde namφsto implicitnφho umφst∞nφ.
-d Touto volbou m∙╛ete provΘst individußlnφ nastavenφ php.ini b∞hem provßd∞nφ skriptu.
-l Otestuje dan² soubor na syntaktickΘ chyby. Tato volba implikuje -q. Pou╛ijte ji pro ·Φely lad∞nφ. Nebudou se hledat fatßlnφ chyby (jako jsou nedefinovanΘ funkce). Pokud chcete hledat i fatßlnφ chyby, pou╛ijte -f.
-m Pou╛itφm tΘto volby PHP vypφ╣e zabudovanΘ (a naΦtenΘ) PHP a Zend moduly, Φφsla verzφ PHP a Zend, a takΘ krßtkou informaci o autorsk²ch prßvech k jßdru Zend.
-i Tento p°epφnaΦ zavolß funkci phpinfo() a vypφ╣e jejφ v²sledek. Pokud PHP nepracuje sprßvn∞, je dobrΘ spustit php -i a podφvat se, zda se nevypsala n∞jakß chybovß hlß╣enφ p°ed nebo uvnit° informaΦnφch tabulek.
-h Touto volbou zφskßte informace o aktußlnφch volbßch p°φkazovΘ °ßdky a jedno°ßdkovΘ popisy o tom, co d∞lajφ.

Spustitelnß verze PHP m∙╛e b²t pou╛ita pro spou╣t∞nφ skript∙ absolutn∞ nezßvisle na webovskΘm serveru. Pokud jste na unixovΘm systΘmu, m∙╛ete do PHP skriptu p°idat specißlnφ prvnφ °ßdek a ud∞lat z n∞j spustiteln² program - systΘm bude v∞d∞t, jak² program by m∞l skript zpracovßvat. Na Windows m∙╛ete asociovat php.exe -q se souborovou p°φponou .php (pro spou╣t∞nφ dvojklikem), nebo m∙╛ete vytvo°it dßvkov² soubor pro spu╣t∞nφ skriptu p°es PHP. Prvnφ °ßdek skriptu pro prßci v Unixu nebude ve Windows vadit, tak╛e tφmto zp∙sobem m∙╛ete psßt programy pro vφce platforem. Jednoduch² p°φklad psanφ PHP programu pro p°φkazovou °ßdku je uveden nφ╛e.

P°φklad B-1. Skript urΦen² ke spou╣t∞nφ z p°φkazovΘ °ßdky (script.php)

#!/usr/bin/php -q
<?php

if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>

This is a command line PHP script with one option.

  Usage:
  <?php echo $argv[0]; ?> <option>

  <option> can be some word you would like
  to print out. With the --help, -help, -h,
  or -? options, you can get this help.

<?php
} else {
    echo $argv[1];
}
?>

Ve v²╣e uvedenΘm skriptu jsme pou╛ili specißlnφ prvnφ °ßdek k indikaci, ╛e by tento soubor m∞l b²t spou╣t∞n pomocφ PHP a nem∞l by vypisovat HTTP hlaviΦky. Jsou zde dv∞ prom∞nnΘ, kterΘ m∙╛ete pou╛φt p°i psanφ aplikacφ pro PHP spou╣t∞n²ch z p°φkazovΘ °ßdky: $argc a $argv. Prvnφ z nich je poΦet argument∙ + 1 (nßzev b∞╛φcφho skriptu). Druhß je pole obsahujφcφ argumenty, poΦφnaje nßzvem skriptu jako Φφslo 0 ($argv[0]).

V ukßzkovΘm programu se testuje, zda je argument∙ vφce Φi mΘn∞ ne╛ jeden. Pokud by argument byl --help, -help, -h nebo -?, vytiskne se nßpov∞da k programu vΦetn∞ skuteΦnΘho nßzvu skriptu. Pokud by byly p°idßny n∞jakΘ dal╣φ argumenty, vytisknou se na v²stup.

Pokud byste cht∞li spou╣t∞t uveden² skript pod Unixem, musφte ho ud∞lat spustiteln²m (nastavit prßva pro spou╣t∞nφ), a pak jednodu╣e napsat script.php vypis_tohle nebo script.php -h. Na Windows musφte pro tento ·kol vytvo°it dßvkov² soubor:

P°φklad B-2. Dßvkov² soubor pro spou╣t∞nφ PHP skriptu z p°φkazovΘ °ßdky (script.bat)

@c:\php\php.exe -q script.php %1 %2 %3 %4

Za p°edpokladu, ╛e jste v²╣e uveden² program nazvali script.php a soubor php.exe mßte ulo╛en² jako c:\php\php.exe, m∙╛ete tento dßvkov² soubor spou╣t∞t takto: script.bat echothis nebo script.bat -h.

Viz takΘ dokumentaci roz╣φ°enφ Readline, kde najdete vφce funkcφ pro pou╛itφ k aplikacφm PHP spou╣t∞n²ch z p°φkazovΘ °ßdky.