PHP je otevřený programovací jazyk používaný hlavně pro webové aplikace a serverové skripty. Zpracovává požadavky, pracuje s databázemi a vytváří odpovědi, například HTML nebo JSON. Prohlížeč běžně dostane výsledek vykonání, nikoli PHP zdrojový kód. Jazyk lze používat také z příkazového řádku pro importy, kontroly dat a jiné úlohy.

Jak vznikne stránka z PHP aplikace

Návštěvník odešle HTTP požadavek, webový server jej podle nastavení předá PHP a aplikace sestaví odpověď. Může přitom ověřit přihlášení, načíst záznamy z databáze nebo sestavit šablonu. Výsledkem je stavový kód, hlavičky a tělo odpovědi. Podobně může vzniknout výpis článků i odpověď API.

Častým provozním řešením je PHP-FPM, které spravuje procesy zpracovávající požadavky. Konkrétní hosting ale může používat jiné zapojení. PHP je jazyk a běhové prostředí; webový server, databáze, framework a redakční systém jsou odlišné vrstvy.

JavaScript v prohlížeči naopak běží u návštěvníka a může měnit již načtenou stránku. JavaScript lze provozovat i na serveru, takže jednoduché srovnání „PHP je backend, JavaScript frontend“ popisuje běžné použití, nikoli všechny možnosti obou jazyků.

Krátký příklad a důležitá hranice bezpečnosti

Při vložení textu do HTML je potřeba ošetřit jeho význam v tomto konkrétním kontextu. Následující ukázka převádí znaky se zvláštním významem v HTML na entity:

PHP
<?php
$title = 'Přehled <domén>';
echo '<h2>' . htmlspecialchars(
    $title, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'
) . '</h2>';

Prohlížeč tak zobrazí text s ostrými závorkami místo toho, aby jej četl jako HTML značku. Jde o malý ilustrační fragment, ne o kompletní aplikaci. Stejná funkce neřeší SQL dotazy, oprávnění, bezpečné URL ani všechny kontexty JavaScriptu.

Pro databázové parametry slouží například prepared statements, které oddělují dotaz od předávaných hodnot. Bezpečnost dále vyžaduje validaci vstupů, kontrolu oprávnění a správné zacházení se soubory, přihlášením a chybami. Žádný jazyk tyto části nenavrhuje automaticky správně.

Proč může být web pomalý, i když PHP funguje

Doba odpovědi nemusí vznikat samotným vykonáváním PHP. Častým problémem je databázový dotaz, čekání na vzdálenou službu, opakované čtení souborů nebo příliš málo dostupných procesů. Zrychlení jednoho cyklu nepomůže, pokud většinu času aplikace čeká na jiný systém.

OPcache může uchovávat přeložený kód a omezit opakovanou přípravu skriptů. Není to však totéž jako cache výsledného HTML. Veřejnou odpověď může za vhodných podmínek ukládat aplikace nebo CDN; osobní výpis účtu se naopak nesmí bez rozlišení sdílet mezi uživateli. Optimalizace začíná měřením jednotlivých vrstev.

Verze, rozšíření a obnova starých projektů

Podporu větví PHP je potřeba ověřovat v aktuální tabulce projektu. Aktivní podpora a následná bezpečnostní podpora jsou různé fáze. To, že hosting starou verzi dovoluje zapnout, samo o sobě neznamená, že stále dostává opravy.

Při migraci otestuj také dostupná rozšíření, knihovny, databázový ovladač a konfiguraci. Starý projekt může používat odstraněné funkce nebo spoléhat na dříve tolerované chování. Pouhé skrytí varování neřeší příčinu. U produkční aplikace je praktické připravit oddělenou kopii, zálohu, kontrolu hlavních funkcí a možnost návratu.

Rozdíl bývá i mezi PHP používaným webem a příkazovým řádkem: mohou načítat jinou konfiguraci nebo rozšíření. Skript, který funguje v terminálu, proto nemusí stejně fungovat přes web, a naopak.

Od osobních skriptů k dlouhodobým aplikacím

PHP vzniklo v devadesátých letech z nástrojů Rasmuse Lerdorfa pro osobní web a postupně se rozvinulo v samostatný jazyk. Dnešní projekty mohou používat objektový návrh, správu závislostí a automatické testy, přesto zůstává možné napsat velmi malý samostatný skript.

Tato dostupnost pomohla vzniku mnoha osobních webů včetně historických projektů popisovaných na 404M. Jejich životnost ale závisí také na průběžné údržbě, práci s daty a schopnosti opustit části kódu, které už nedávají smysl. Jazyk sám nerozhoduje, zda je projekt přehledný nebo udržitelný.

Z archivu 404M

  • PHP vs Javascript (12. 7. 2014) — Dobová autorova úvaha při programování crawleru. Srovnání z roku 2014 zachycuje jeho tehdejší pohled, nikoli dnešní objektivní žebříček jazyků.
  • Jak jsem oprášil 404M (19. 3. 2026) — Konkrétní obnova staré PHP aplikace a potíže při přechodu mezi verzemi. Příklady ukazují cenu historických závislostí, ne univerzální postup opravy každé instalace.

Související pojmy

  • Prepared statements — Oddělení databázového dotazu a parametrů řeší jiný kontext než escapování HTML.
  • CDN — Cache výsledné veřejné odpovědi se liší od překladu a vykonávání PHP kódu.
  • Codex — Programovací agent může pomoci s úpravami a kontrolami existující PHP aplikace.