Pokud občas potřebujete spustit a odladit jednoduchý skript nebo otestovat nějakou část většího projektu, pak asi použijete nějakou metodu ladění přímo ve svém kódu, případně příslušnou část vykopírujete do samostatného souboru a spustíte. U větších celků pak možná založíte na webovém serveru další projekt, kde budete ladit.
Vykopírování části skriptu mimo hlavní projekt a nastavení klasického webserveru (typicky Apache) může docela zdlouhavé. PHP 5.4 již obsahuje vestavěný webový server, který můžete k podobným účelům využít. Spouští se velmi jednoduše prostřednictvím příkazového řádku a poslouží pro běh jednodušších aplikací. Tím mám na mysli projekty, které nepočítají s pokročilými direktivami Apache, podporou mod_rewrite, zpracováváním HTP hlaviček a podobně. Většinu z toho PHP web server nenabízí, nebo poskytuje v omezené podobě.
Web server zabudovaný v PHP
Abyste mohli PHP bez problémů používat, zařaďte jej ve svém systému pro proměnné PATH. Jak na to ve Windows mám zmíněno třeba v článku Windows Azure a PHP: jak na web v cloudu krok za krokem. Pak stačí do příkazového řádku zadat php -v a měli byste uvidět verzi PHP, kterou používáte.
Základní použití web serveru v PHP je následující. Zadáte příkaz ve tvaru:
php -S adresa:port -t slozka
Adresa může být například localhost, ale též může být vyjádřena číselně jako 0.0.0.0 (web server by pak měl být dostupný z dalších počítačů v síti, ale nezkoušel jsem). Port je asi jasný, jde o číslo komunikačního portu, na kterém bude web server PHP naslouchat. Použijte něco jiného, než standardní 80, abyste se vyhnuli případnému konfliktu s běžícím Apache.
Parametr -t umožňuje specifikovat složku, ze které bude web server načítat data pro zobrazení ve webovém prohlížeči. Cestu zadávejte v absolutním tvaru.
Abychom to tedy vyzkoušeli, vytvořte si soubor index.php, do kterého vložíte kód <?php phpinfo(); ?>. Uložte jej někam na disk a zkuste na příkazovém řádku zadat následující:
php -S localhost:8080 -t c:\cesta-ke-slozce-se-souborem
Pokud nenastane nějaký problém, pak po zadání adresy http://localhost:8080 do webového prohlížeče uvidíte informaci o konfiguraci PHP ve vašem počítači.
Všimněte si, že v příkazovém řádku se s každým přístupem ke stránce na tomto webovém serveru zobrazí informace o času přístupu a načítaném souboru.
Výhoda oproti Apache je v tom, že můžete velice rychle zprovoznit web server pro testování různých skriptů z různých adresářů. Nemusíte přitom vytvářet žádné konfigurační soubory a něco někde složitě nastavovat.
Jako další zajímavé využití webserveru v PHP se nabízí vytvoření lokálních serverů sloužících pro provoz webových aplikací, které se ale tváří jako desktopové. Vytvoříte-li nějaký dávkový soubor, který spustí php s potřebnými parametry a následně otevře webový prohlížeč s připravenou aplikací, pak můžete uživatelům nabízet nějaký lokální obsah, aniž byste potřebovali internet.
Nabízí se tedy řešení pro různé autoruny a podobné jednoduché aplikace. Ještě zajímavější to může být, pokud si třeba v C# a Visual Studiu sestavíte vlastní webový prohlížeč, který ale bude mít jen rámeček okna a celou jeho plochu bude vyplňovat webová stránka. Pak uživatel nemusí poznat, že nepracuje s klasickou desktopovou aplikací.
Na druhou stranu tvůrci PHP zmiňují, že tento vestavěný web server je určen jen pro vývojářské pokusy a neměl by být nasazen do produkčního prostředí. Zatím se zdá, že funguje dobře. Zkoušel jsem v něm například jednoduchý redakční systém GetSimple, který vše zapisuje do XML a fungoval bez nejmenších problémů.
Interaktivní shell v PHP
Další zajímavou pomůckou pro vývojáře pracujícího s PHP může být interaktivní shell. Nejde o záležitost nějak novou, ale dovolím si ji zde připomenout. Interaktivní shell spustíte z příkazového řádku zadáním:
php -a
Nyní můžete do příkazového řádku psát a vkládat příkazy kódu PHP a sledovat jejich výstup. Potřebujete-li něco rychle odladit, aniž byste spouštěli celý skript, je to neocenitelný pomocník.
Ovšem pozor. Pokud vaše instalace PHP není zkompilována s příznakem --with-readline, pak se po zadání php -a neobjeví výzva php >, ale info o tom, že jste spustili interaktivní režim. To je něco trošku jiného, než je interaktivní shell. Příkazy zde píšete normálně jako do editoru a jejich výstup uvidíte až poté, co stisknete Ctrl+D (ve Windows možná dvakrát za sebou). Zápis do interaktivního režimu také musíte začít znaky <?php, zkrátka podobně, jako byste tvořili soubor zmixovaný z HTML a PHP.
Další informace najdete na webových stránkách PHP:
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Přidat komentář