Jak nainstalovat PHP na Ubuntu: Kompletní průvodce od začátečníka po pokročilé (Ubuntu 22.04 LTS)

.## 1. Úvod

目次

Proč používat PHP na Ubuntu

PHP je server‑side skriptovací jazyk široce využívaný v mnoha webových aplikacích, včetně WordPressu. Je dlouhodobě používán ve vývoji webu a velké množství CMS platforem a frameworků je postaveno na PHP.

Ubuntu je vysoce stabilní distribuce Linuxu, kterou používají vývojáři po celém světě a je zvláště vhodná pro serverová prostředí. Kombinace Ubuntu a PHP je široce adoptována, od osobních vývojových nastavení po podnikově nasazené produkční systémy.

Cílové publikum a účel tohoto článku

Tento článek je určen pro širokou škálu uživatelů, od začátečníků, kteří chtějí nainstalovat PHP na Ubuntu, ale neví, kde začít, až po středně pokročilé uživatele, kteří potřebují nainstalovat konkrétní verze PHP. Postupy jsou vysvětleny co nejjasněji.

Instrukce jsou založeny na Ubuntu 22.04 LTS, ale stejné základní kroky platí i pro jiné verze.

Co se naučíte

Čtením tohoto článku budete schopni pochopit a vyzkoušet následující:

  • Základní metody instalace PHP na Ubuntu
  • Jak nainstalovat a přepínat mezi více verzemi PHP
  • Jak ověřit fungování PHP a řešit případné problémy
  • Konfiguraci pro integraci s Apache a Nginx
  • Jak nainstalovat běžně používané PHP moduly

2. Předpoklady a příprava

Jak zkontrolovat verzi Ubuntu

Nejprve zjistěte, kterou verzi Ubuntu používáte. Metody instalace PHP a podporované moduly se mohou mírně lišit v závislosti na verzi Ubuntu.

Verzi Ubuntu můžete zjistit spuštěním následujícího příkazu:

lsb_release -a

Alternativně můžete použít tento příkaz:

cat /etc/os-release

Tento článek popisuje postupy založené na Ubuntu 22.04 LTS, ale stejné kroky obecně platí i pro Ubuntu 20.04 a 23.10.

Udržujte systémové balíčky aktuální

Před instalací PHP je velmi důležité aktualizovat všechny systémové balíčky. Pomáhá to předcházet problémům se závislostmi a konfliktům.

sudo apt update
sudo apt upgrade -y

Tím se aktualizuje index balíčků APT a zajistí, že všechny balíčky budou nainstalovány v nejnovějších stabilních verzích.

Nainstalujte požadované nástroje

Některé verze PHP vyžadují další nástroje pro správu repozitářů. Balíček software-properties-common je potřeba pro přidání repozitářů, jako jsou PPA.

Pokud není nainstalován, nainstalujte jej pomocí následujícího příkazu:

sudo apt install -y software-properties-common

Tento balíček je nezbytný pro příkazy jako add-apt-repository, které se běžně používají při instalaci konkrétních verzí PHP přes PPA.

Používání oprávnění root nebo sudo

Většina operací uvedených v tomto článku vyžaduje změny na úrovni systému. Při spouštění příkazů nezapomeňte použít sudo.

3. Jak nainstalovat PHP

Existují dva hlavní způsoby, jak nainstalovat PHP na Ubuntu. Jedním je instalace z výchozích repozitářů a druhým instalace konkrétní verze pomocí PPA (Personal Package Archive). Každá metoda je podrobně vysvětlena níže.

Instalace PHP z výchozího repozitáře

Ubuntu poskytuje stabilní verzi PHP ve svých výchozích repozitářích. Pokud nepotřebujete konkrétní verzi, je to nejjednodušší metoda.

sudo apt install -y php

Po instalaci ověřte, že je PHP nainstalováno správně:

php -v

Příklad výstupu:

PHP 8.1.2 (cli) (built: ...)

Na Ubuntu 22.04 je ve výchozím nastavení nainstalována PHP 8.1.

Instalace konkrétní verze PHP pomocí PPA

Pokud chcete použít nejnovější verzi PHP nebo spravovat více verzí, můžete přidat PPA ondrej/php.

Krok 1: Přidání PPA repozitáře

sudo add-apt-repository ppa:ondrej/php
sudo apt update

Toto PPA je široce používáno v komunitě Ubuntu a poskytuje stabilní sestavení pro více verzí PHP.

Krok 2: Instalace požadované verze PHP

Například pro instalaci PHP 8.2:

sudo apt install -y php8.2

.Můžete také nainstalovat jiné verze, například PHP 7.4 nebo 8.0.

Krok 3: Ověření nainstalované verze

php -v

4. Ověření fungování PHP

Po instalaci PHP ověřte, že funguje správně. Můžete to zkontrolovat pomocí příkazové řádky i přes webový server, například Apache nebo Nginx.

Ověření pomocí příkazové řádky (CLI)

Nejprve zkontrolujte verzi PHP v terminálu:

php -v

Příklad výstupu:

PHP 8.2.10 (cli) (built: Aug 23 2023 08:12:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies

Ověření pomocí webového serveru (Apache)

Pokud je nainstalován Apache, vytvořte testovací stránku pomocí funkce phpinfo().

1. Vytvořte testovací soubor

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

2. Přístup přes prohlížeč

http://localhost/info.php

3. Potvrďte výstup

Pokud se zobrazí podrobné informace o PHP, PHP funguje správně s Apachem.

🔍 Poznámka: Výstup phpinfo() obsahuje citlivé informace. Po ověření soubor odstraňte.

sudo rm /var/www/html/info.php

Ověření s Nginx + PHP-FPM

Při použití Nginx je PHP zpracováváno pomocí php-fpm. Pro ověření správné integrace se ujistěte, že soubory .php jsou správně nakonfigurovány v konfiguračním souboru Nginx, a poté vytvořte soubor info.php stejně jako u Apache.

Pokud je konfigurace nesprávná, můžete narazit na chybu 500 nebo se soubor stáhne místo jeho vykonání. V takových případech zkontrolujte nastavení jako fastcgi_pass a include fastcgi-php.conf; v konfiguraci Nginx.

5. Instalace běžně používaných PHP modulů

Instalace samotného PHP neposkytuje veškerou funkčnost. Mnoho funkcí je dodáváno jako samostatné moduly (rozšíření), které je třeba instalovat podle potřeby. Tato sekce představuje běžně používané PHP moduly v reálném vývoji a provozu.

Co jsou PHP moduly?

PHP moduly (také nazývané rozšíření) přidávají specifické schopnosti, jako je připojení k databázi, zpracování multibyte řetězců, zpracování obrázků a parsování XML.

Moduly jsou k dispozici jako balíčky APT a lze je nainstalovat následovně:

sudo apt install php-module-name

Pokud chcete specifikovat verzi, použijte formát například php8.2-mbstring.

Hlavní PHP moduly a jejich využití

php-mbstring (Podpora multibyte řetězců)

Tento modul je nezbytný pro práci s multibyte znakovými řetězci, jako je japonský text. Je téměř povinný pro japonské weby a zpracování e‑mailů.

sudo apt install php-mbstring

php-mysql (Připojení k MySQL / MariaDB)

Tento modul je vyžadován při připojování k databázím jako MySQL nebo MariaDB. Je nezbytný pro aplikace jako WordPress.

sudo apt install php-mysql

php-gd (Zpracování obrázků)

Tento modul se používá pro generování, konverzi a změnu velikosti obrázků a je běžně využíván pro náhledy a manipulaci s obrázky.

sudo apt install php-gd

php-xml (Zpracování XML)

Tento modul je potřebný pro práci s XML‑založenými daty, jako jsou RSS kanály a SOAP služby. Často se používá v CMS platformách a integracích API.

sudo apt install php-xml

php-curl (HTTP komunikace)

Tento modul umožňuje HTTP požadavky ze serveru, například při integraci s externími API. Je vyžadován mnoha moderními frameworky.

sudo apt install php-curl

php-zip (Zpracování komprimovaných souborů)

Tento modul umožňuje vytvářet a rozbalovat ZIP soubory a často se používá ve funkcích nahrávání souborů.

sudo apt install php-zip

Aktivace modulů a restartování služeb

Některé moduly vyžadují po instalaci explicitní aktivaci. K jejich povolení použijte phpenmod.

sudo phpenmod module_name
sudo systemctl restart apache2

Povolené moduly se projeví po restartování webového serveru.

6. Správa a přepínání verzí PHP

.Ubuntu vám umožňuje nainstalovat a používat více verzí PHP na jednom serveru. To je zvláště užitečné v vývojových prostředích nebo na serverech hostujících více webových aplikací.

Tato sekce vysvětluje, jak přepínat verze PHP pro CLI a pro Apache.

Přepínání verzí PHP v CLI

Použitý příkaz: update-alternatives

Můžete snadno přepnout verzi PHP používanou v příkazové řádce pomocí update-alternatives.

Krok 1: Zkontrolujte nainstalované verze PHP

ls /usr/bin/php*

Krok 2: Zaregistrujte verze PHP (pouze při prvním použití)

sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82

Krok 3: Vyberte verzi PHP

sudo update-alternatives --config php

Uvidíte výběrové menu podobné následujícímu:

There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.2   82        auto mode
  1            /usr/bin/php7.4   74        manual mode
  2            /usr/bin/php8.2   82        manual mode

Press <enter> to keep the current choice[*], or type selection number:

Krok 4: Ověřte verzi

php -v

Přepínání verzí PHP v Apache

Při používání Apache jsou verze PHP spravovány pomocí modulů Apache. Verze můžete přepínat povolením a zakázáním modulů.

1. Zkontrolujte dostupné moduly

ls /etc/apache2/mods-available | grep php

2. Zakázat aktuálně aktivní modul

sudo a2dismod php7.4

3. Povolit požadovanou verzi

sudo a2enmod php8.2

4. Restartovat Apache

sudo systemctl restart apache2

7. Integrace PHP s Apache a Nginx

PHP se stává skutečně výkonným, když je integrován s webovým serverem. Na Ubuntu jsou nejčastěji používané webové servery Apache a Nginx.

Integrace s Apache (mod_php)

Apache může zpracovávat PHP skripty přímo pomocí modulu mod_php. Tato metoda je jednoduchá a vhodná pro CMS platformy jako WordPress.

Krok 1: Nainstalujte Apache a mod_php

sudo apt install -y apache2 libapache2-mod-php

Krok 2: Restartujte Apache

sudo systemctl restart apache2

Krok 3: Otestujte spuštění PHP

<?php
phpinfo();
?>
http://localhost/test.php

Integrace s Nginx (PHP-FPM)

Nginx nepracuje s PHP přímo. Místo toho se spoléhá na PHP-FPM (FastCGI Process Manager).

Krok 1: Nainstalujte Nginx a PHP-FPM

sudo apt install -y nginx php-fpm

Krok 2: Upravte konfiguraci Nginx

sudo nano /etc/nginx/sites-available/default
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

Krok 3: Restartujte Nginx

sudo systemctl restart nginx

8. Řešení problémů

Zdrojový kód PHP se zobrazuje v prohlížeči

Příčina

K tomu dochází, když webový server nezpracovává soubory PHP správně.

Řešení

  • Apache:
    sudo apt install libapache2-mod-php
    sudo systemctl restart apache2
    
  • Nginx:
    sudo systemctl restart php8.2-fpm
    sudo systemctl restart nginx
    

PHP funkce jsou nedefinované

Příčina

Požadované PHP moduly nejsou nainstalovány nebo povoleny.

Řešení

sudo apt install php-mbstring php-xml php-curl
sudo systemctl restart apache2
php -m

PHP chyby se nezobrazují

Řešení

sudo nano /etc/php/8.2/apache2/php.ini
display_errors = On
error_reporting = E_ALL
sudo systemctl restart apache2

Umístění souborů protokolu

Apache:

/var/log/apache2/error.log

Nginx:

/var/log/nginx/error.log

PHP-FPM:

/var/log/php8.2-fpm.log

9. Shrnutí

Tento článek poskytuje krok‑za‑krokem vysvětlení, jak nainstalovat PHP na Ubuntu, od základů po pokročilá témata.

Klíčové poznatky

  • Zkontrolujte verzi Ubuntu a aktualizujte balíčky
  • Nainstalujte PHP z výchozích repozitářů nebo pomocí PPA
  • Ověřte PHP pomocí CLI a webových serverů
  • Rozšiřte funkčnost pomocí modulů
  • Flexibilně spravujte více verzí PHP
  • Správně integrujte s Apache nebo Nginx
  • Kontrolujte logy při řešení problémů

Další kroky

  • Nainstalujte MySQL nebo MariaDB
  • Nastavte WordPress
  • Používejte PHP frameworky jako Laravel
  • Aktivujte HTTPS pomocí SSL certifikátů
  • Spravujte služby pomocí systemd

Ubuntu a PHP společně poskytují robustní a flexibilní vývojové prostředí. Použijte tento průvodce jako základ a nadále rozšiřujte své dovednosti.

10. Často kladené otázky (FAQ)

Q1. Jak nainstalovat nejnovější verzi PHP na Ubuntu?

A. Použijte PPA ondrej/php a uveďte požadovanou verzi.

Q2. Jak přepnout verze PHP v CLI?

sudo update-alternatives --config php

Q3. Zdrojový kód PHP se zobrazuje v Apache.

sudo apt install libapache2-mod-php
sudo systemctl restart apache2

Q4. Kde se nachází php.ini?

  • Apache: /etc/php/8.2/apache2/php.ini
  • CLI: /etc/php/8.2/cli/php.ini

Q5. Jak povolit PHP moduly?

sudo phpenmod mbstring
sudo systemctl restart apache2

Q6. PHP nefunguje s Nginx.

Ujistěte se, že je nainstalován php-fpm a že je fastcgi_pass správně nakonfigurován.

Q7. Chyby PHP nejsou viditelné.

display_errors = On
error_reporting = E_ALL
侍エンジニア塾