Rozdział 1 z 9

Kurs Laravel 13 #1: instalacja i konfiguracja projektu

zweryfikowano 2 września 2026 · 6 min

Szybka odpowiedź

Zainstaluj Laravela 13 komendą composer create-project laravel/laravel blog, a potem uruchom php artisan serve. Komenda sama tworzy plik .env, generuje klucz aplikacji i wykonuje migracje. Laravel 13 wymaga co najmniej PHP 8.3 i domyślnie korzysta z SQLite.

Na koniec tego rozdziału, będziesz mieć zainstalowany projekt Laravel 13, skonfigurowany na SQLite, a w przeglądarce wyświetli się powitalna strona.

Ten pierwszy rozdział instaluje Laravela 13, wyjaśnia, do czego służy każdy katalog projektu, i uruchamia serwer deweloperski. Na koniec w twojej przeglądarce wyświetli się powitalna strona Laravela.

Czego potrzebujesz

Laravel 13 wymaga co najmniej PHP 8.3 i działa na PHP 8.3, 8.4 oraz 8.5. Sprawdź swoją wersję:

bash
php -v

Liczy się tylko pierwsza linia. Musi zgłaszać PHP 8.3, 8.4 albo 8.5:

code
PHP 8.4.25 (cli) (built: Aug 27 2026 20:19:39) (NTS)

Jeśli komenda nie istnieje albo zwraca starszą wersję, zainstaluj PHP. Na Windowsie WampServer albo Laragon, na macOS Homebrew z brew install php, na Linuksie pakiet php-cli twojej dystrybucji.

Potrzebujesz też Composera, menedżera zależności PHP-a. To on pobiera Laravela i wszystko, od czego framework zależy.

bash
composer --version

Rozszerzenia PHP

Laravel potrzebuje kilku rozszerzeń PHP. Większość instalacji dostarcza je od razu. Dwa warto sprawdzić, bo ich brak zablokuje cię później:

bash
php -m | grep -E "pdo_sqlite|intl"

pdo_sqlite obsługuje bazę danych z tego kursu. intl będzie wymagane w rozdziale 4 przez panel administracyjny, instalacja teraz oszczędza nieudanej instalacji w tamtym momencie.

Edytor

VS Code jest darmowy i w zupełności wystarcza, z rozszerzeniem „PHP Intelephense”. PhpStorm jest płatny i rozumie Laravela natywnie. Kurs nie zakłada żadnego z nich: wszystko dzieje się w terminalu.

Utworzenie projektu

Przejdź do katalogu, w którym trzymasz swoje projekty, a potem:

bash
composer create-project laravel/laravel blog

Composer pobiera Laravela i jego zależności do katalogu blog. Operacja trwa od jednej do trzech minut, zależnie od łącza.

Co komenda robi sama z siebie

Od Laravela 11 create-project nie ogranicza się do pobrania plików. Kopiuje .env.example do .env, generuje klucz aplikacji, tworzy plik database/database.sqlite i wykonuje początkowe migracje. Komendy php artisan key:generate i php artisan migrate, które znajdziesz w starszych kursach, na nowym projekcie nie są już potrzebne.

Sprawdź zainstalowaną wersję:

bash
cd blog
php artisan --version
code
Laravel Framework 13.30.1

Alternatywa: instalator Laravela

Istnieje instalator globalny, który skraca komendę i proponuje wybór zestawu startowego:

bash
composer global require laravel/installer
laravel new blog

To wygodne, jeśli często zakładasz projekty, ale dokłada globalną zależność na twojej maszynie i bywa źródłem problemów ze PATH. Jeśli dostajesz laravel: command not found, artykuł jak naprawić „laravel: command not found” opisuje rozwiązanie. Na potrzeby tego kursu composer create-project wystarcza i pozwala ominąć ten objazd.

Drzewo katalogów projektu

Oto zawartość katalogu blog. Szkielet Laravela mocno schudł od wersji 8: kilku plików opisywanych w starszych kursach już nie ma.

W katalogu głównym

app

Kod twojej aplikacji. Po instalacji zawiera tylko trzy pliki: bazowy kontroler, model User i service provider. To tutaj dołożysz swoje kontrolery i modele.

bootstrap

Plik bootstrap/app.php to punkt konfiguracji aplikacji: tam deklaruje się trasy, middleware i obsługę błędów. W Laravelu 8 i 9 tę rolę dzieliły między siebie app/Http/Kernel.php, app/Console/Kernel.php i app/Exceptions/Handler.php, których już nie ma.

config

Pliki konfiguracyjne. Laravel 13 publikuje domyślnie tylko dziesięć, wobec dwudziestu kilku dawniej: pozostałe nadal istnieją we frameworku, z wartościami domyślnymi. Żeby ściągnąć któryś z nich i zmodyfikować, użyj php artisan config:publish.

database

Migracje (struktura tabel), seedery (dane początkowe) i fabryki (obiekty testowe). Tu leży też database.sqlite, twoja baza danych.

public

Jedyny katalog, który serwer WWW powinien wystawiać. Zawiera index.php, punkt wejścia wszystkich żądań, oraz pliki skompilowane przez Vite.

resources

Widoki Blade, arkusze CSS i pliki JavaScriptu przed kompilacją.

routes

Deklaracje adresów. Laravel 13 tworzy tylko dwa pliki, web.php i console.php. Pliki api.php i channels.php, opisywane w kursach pisanych pod Laravela 8, nie powstają już z automatu: dodają je php artisan install:api i php artisan install:broadcasting, jeśli ich potrzebujesz. Ten kurs korzysta wyłącznie z web.php.

W katalogu app

Http/Controllers

Kontrolery: kod, który odbiera żądanie, pobiera dane i wybiera widok do zwrócenia.

Models

Modele Eloquent. Każda tabela w bazie ma odpowiadający jej model, który służy do czytania i zapisu. Ten katalog istnieje od Laravela 8, we wcześniejszych wersjach modele leżały bezpośrednio w app.

Konfiguracja projektu

Cała konfiguracja zależna od maszyny mieszka w pliku .env, w katalogu głównym. Pliki z config czytają go funkcją env(). Tego pliku nigdy nie wolno wersjonować: zawiera twoje hasła.

Nazwa i adres serwisu

.env
APP_NAME="Mon blog"
APP_URL=http://localhost:8000

APP_NAME pokaże się w tytule stron. APP_URL służy do budowania linków bezwzględnych, między innymi do wgranych obrazków.

Baza danych

Laravel 13 domyślnie korzysta z SQLite:

.env
DB_CONNECTION=sqlite

SQLite trzyma całą bazę w jednym pliku, database/database.sqlite. Nie ma serwera do uruchomienia, użytkownika do założenia ani hasła do zapamiętania. Do nauki to najlepszy wybór: kasujesz plik i zaczynasz od zera.

Jeśli wolisz MySQL-a albo MariaDB, załóż bazę, a potem zastąp te linie:

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=

Kurs działa na obu. Różnica w zachowaniu ujawnia się w rozdziale 8, przy wyszukiwarce: jest tam zmierzona i wyjaśniona.

Pliki wgrywane z zaplecza lądują w storage/app/public, który nie jest dostępny z sieci. Ta komenda tworzy dowiązanie symboliczne, dzięki któremu stają się widoczne:

bash
php artisan storage:link
code
INFO  The [public/storage] link has been connected to [storage/app/public].

Uruchomienie serwera

bash
php artisan serve
code
  INFO  Server running on [http://127.0.0.1:8000].

  Press Ctrl+C to stop the server

Otwórz http://127.0.0.1:8000. Wyświetla się powitalna strona Laravela. Zostaw ten terminal otwarty: serwer działa tak długo, jak go nie zatrzymasz.

Jeśli port 8000 jest już zajęty, Laravel się nie zatrzymuje: próbuje następnego i uprzedza cię o tym. Odczytaj wyświetlony adres, zamiast go zakładać.

code
  Failed to listen on 127.0.0.1:8000 (reason: Address already in use)

   INFO  Server running on [http://127.0.0.1:8001].

Projekt możesz też serwować przez Apache, Nginx, Dockera albo Laravel Herd. W takim razie katalog główny serwera musi wskazywać na katalog public, nigdy na katalog główny projektu: wystawienie go sprawiłoby, że twój plik .env da się pobrać.

Sprawdzenie instalacji

Ta komenda podsumowuje stan projektu i potwierdza, że wszystko jest na miejscu:

bash
php artisan about
code
Environment ........................................................
Application Name .......................................... Mon blog
Laravel Version ........................................... 13.30.1
PHP Version ................................................ 8.4.25
Composer Version ........................................... 2.10.3
Environment ................................................. local
Debug Mode ................................................ ENABLED

Drivers ...........................................................
Cache .................................................... database
Database ................................................... sqlite
Queue .................................................... database
Session .................................................. database

Projekt jest gotowy. Spis treści serii przypomina, co wnosi każdy rozdział. Kolejny rozdział wyjaśnia, jak powiązać adres z własnym kodem.

Częste błędy

Port 8000 jest już zajęty php artisan serve się nie zatrzymuje: przechodzi na 8001 i to ogłasza. Odczytaj wyświetlony adres, zamiast go zakładać.
Brakuje rozszerzenia intl Od razu nie jest potrzebne, ale panel administracyjny z rozdziału 4 go wymaga. Instalacja teraz oszczędza późniejszego błędu composera.
Katalog główny serwera wskazuje na projekt Apache albo Nginx muszą serwować katalog public, nigdy katalog główny: inaczej plik .env da się pobrać.
Nie ma plików api.php i channels.php To normalne od Laravela 11. Tworzą je php artisan install:api oraz install:broadcasting, jeśli są potrzebne.
Newsletter

Nowe testy, poradniki i projekty, e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.