Instalacja PHP i rozszerzeń dla Laravela na Debianie 13
zweryfikowano 2 września 2026 · 4 min
Debian 13 dostarcza PHP 8.4 we własnych repozytoriach: sudo apt install php-cli php-fpm php-mbstring php-xml php-curl php-zip php-bcmath php-intl php-mysql wystarczy Laravelowi 13, bez zewnętrznego repozytorium. Uwaga na dwa pakiety wymieniane bez powodu: php-json od PHP 8.0 nic już nie wnosi, a potrzebny jest php-mysql, nie php-mysqli, bo Laravel idzie przez PDO.
Laravel 13 wymaga co najmniej PHP 8.2 i garstki rozszerzeń. Dobra wiadomość: Debian 13 „trixie” dostarcza PHP 8.4 we własnych repozytoriach, więc zewnętrzne repozytorium Sury jest w typowym scenariuszu zbędne.
Kroki wykonane na czystym kontenerze z Debianem 13, 2 września 2026 roku. Ten rozdział należy do instalacji Laravela na Debianie, w ścieżce Programowanie webowe.
Sprawdź, co oferuje twój Debian
Zanim dołożysz jakiekolwiek repozytorium, zobacz, co daje sama dystrybucja:
sudo apt update
apt-cache policy php-cliphp-cli:
Installed: (none)
Candidate: 2:8.4+96
Version table:
2:8.4+96 500
500 http://deb.debian.org/debian trixie/main arm64 PackagesPHP 8.4 jest dostępne. Laravelowi 13 wystarcza to z zapasem i oszczędza ci utrzymywania zewnętrznego repozytorium. Zestawienie wersji Debiana i dostarczanej z nią wersji PHP:
| Debian | PHP z oficjalnych repozytoriów | Wystarczy dla Laravela 13? |
|---|---|---|
| 13 „trixie” | 8.4 | Tak |
| 12 „bookworm” | 8.2 | Tak, dokładnie wymagane minimum |
| 11 „bullseye” | 7.4 | Nie, potrzebne zewnętrzne repozytorium |
Instalacja PHP i rozszerzeń
Jedno polecenie pokrywa podstawę wymaganą przez Laravela oraz sterowniki baz danych:
sudo apt install -y php-cli php-fpm \
php-mbstring php-xml php-curl php-zip \
php-bcmath php-intl \
php-mysql php-sqlite3 \
unzip curl ca-certificatesDwóch popularnych rozszerzeń nie ma na tej liście, bo zależą od twoich decyzji architektonicznych: php-redis, omówiony w rozdziale o Redisie, oraz php-gd lub php-imagick do obróbki obrazów.
Sprawdź uzyskaną wersję:
php -vPHP 8.4.24 (cli) (built: Jul 31 2026 05:11:11) (NTS)Następnie upewnij się, że wszystkie rozszerzenia wymagane przez Laravela są na miejscu:
for e in ctype curl dom fileinfo filter hash mbstring openssl \
pcre pdo session tokenizer xml bcmath intl zip; do
printf "%-10s %s\n" "$e" "$(php -m | grep -qix "$e" && echo OK || echo MANQUANT)"
doneNa instalacji testowej wszystkie szesnaście linii zwraca OK. Część z tych rozszerzeń jest wkompilowana w debianowy plik binarny PHP i nie ma osobnego pakietu: mimo to pojawiają się w php -m.
Dwa pakiety wymieniane bez powodu
Od PHP 8.0 rozszerzenie JSON jest wkompilowane w plik binarny i nie da się go wyłączyć. Pakiet php-json został w Debianie wyłącznie jako pakiet przejściowy. Instalacja niczego nie psuje, ale też niczego nie wnosi.
Laravel idzie przez PDO, nie przez mysqli. Potrzebny jest php-mysql, a on dostarcza jedno i drugie. Sprawdź, co PHP naprawdę widzi:
php -r 'echo implode(", ", PDO::getAvailableDrivers()), PHP_EOL;'mysql, sqliteJeśli mysql nie pojawi się na tej liście, Laravel nie połączy się ani z MySQL, ani z MariaDB, niezależnie od ustawień w pliku .env.
Ustawienia PHP pod aplikację webową
Obok siebie istnieją dwa pliki, z różnymi wartościami: jeden dla wiersza poleceń, drugi dla serwera WWW. Poprawianie niewłaściwego to klasyczne źródło nieporozumień.
/etc/php/8.4/cli/php.ini # artisan, composer, zadania cykliczne
/etc/php/8.4/fpm/php.ini # żądania obsługiwane przez nginx lub ApacheUstawienia, które liczą się dla aplikacji Laravel, siedzą w pliku FPM:
memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 21M
max_execution_time = 60post_max_size musi pozostać większy niż upload_max_filesize, inaczej wysyłka o maksymalnym rozmiarze zostanie odrzucona, zanim dotrze do aplikacji. Następnie przeładuj usługę, bo bez tego wartości pozostaną bez zmian:
sudo systemctl reload php8.4-fpm
php -i | grep memory_limit # wartość dla CLI
sudo -u www-data php-fpm8.4 -i | grep memory_limitPHP jest na miejscu, kolejnym krokiem jest instalacja Composera.
Instalacja innej wersji PHP z repozytorium Sury
Ten objazd ma sens tylko wtedy, gdy celujesz w wersję, której Debian nie dostarcza: PHP 8.5 na Debianie 13 albo PHP 8.2 na Debianie 11. Metoda się zmieniła: apt-key został usunięty w Debianie 12, trzeba przejść na osobny pęk kluczy.
sudo apt install -y curl ca-certificates
sudo curl -fsSLo /etc/apt/keyrings/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/etc/apt/keyrings/php.gpg] https://packages.sury.org/php/ $(. /etc/os-release && echo $VERSION_CODENAME) main" \
| sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt install -y php8.5-cli php8.5-fpm php8.5-mbstring php8.5-xml php8.5-curl php8.5-zip php8.5-bcmath php8.5-intl php8.5-mysqlPrzy kilku zainstalowanych wersjach wybierz tę, która odpowiada na polecenie php:
sudo update-alternatives --config phpTrzeba je będzie utrzymywać: przy każdej zmianie wersji Debiana sprawdzać, czy repozytorium nadąża, i osobno pilnować aktualizacji bezpieczeństwa. Jeśli oficjalne repozytoria wystarczają, zostań przy nich.
Częste błędy
systemctl reload php8.4-fpm.