Kapitel 1 von 9

Laravel-13-Tutorial #1: Projekt installieren und einrichten

geprüft am 2 September 2026 · 6 Min.

Schnelle Antwort

Installier Laravel 13 mit composer create-project laravel/laravel blog und starte dann php artisan serve. Der Befehl legt die Datei .env an, erzeugt den Application Key und führt die Migrationen von allein aus. Laravel 13 verlangt mindestens PHP 8.3 und nutzt standardmäßig SQLite.

Am Ende dieses Kapitels, hast du ein installiertes Laravel-13-Projekt, das auf SQLite konfiguriert ist, und die Willkommensseite erscheint in deinem Browser.

Dieses erste Kapitel installiert Laravel 13, erklärt, wozu jeder Ordner im Projekt da ist, und startet den Entwicklungsserver. Am Ende erscheint die Willkommensseite von Laravel in deinem Browser.

Was du brauchst

Laravel 13 verlangt mindestens PHP 8.3 und läuft mit PHP 8.3, 8.4 und 8.5. Prüf deine Version:

bash
php -v

Nur die erste Zeile zählt. Sie muss PHP 8.3, 8.4 oder 8.5 melden:

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

Existiert der Befehl nicht oder meldet er eine ältere Version, installier PHP. Unter Windows über WampServer oder Laragon, unter macOS über Homebrew mit brew install php, unter Linux über das Paket php-cli deiner Distribution.

Du brauchst außerdem Composer, den Dependency-Manager von PHP. Er lädt Laravel und alles herunter, was davon abhängt.

bash
composer --version

PHP-Erweiterungen

Laravel braucht ein paar PHP-Erweiterungen. Die meisten Installationen bringen sie bereits mit. Zwei lohnen eine Prüfung, weil ihr Fehlen später blockiert:

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

pdo_sqlite bedient die Datenbank dieses Tutorials. intl verlangt in Kapitel 4 das Admin-Panel, wenn du sie jetzt installierst, scheitert die Installation dort nicht.

Ein Editor

VS Code ist kostenlos und reicht mit der Erweiterung „PHP Intelephense“ vollkommen aus. PhpStorm kostet Geld und versteht Laravel von Haus aus. Das Tutorial setzt keinen von beiden voraus: Alles läuft im Terminal.

Das Projekt anlegen

Wechsel in den Ordner, in dem deine Projekte liegen, und dann:

bash
composer create-project laravel/laravel blog

Composer lädt Laravel und seine Abhängigkeiten in einen Ordner blog. Das dauert je nach Verbindung ein bis drei Minuten.

Was der Befehl von allein erledigt

Seit Laravel 11 lädt create-project nicht mehr nur die Dateien herunter. Der Befehl kopiert .env.example nach .env, erzeugt den Application Key, legt die Datei database/database.sqlite an und führt die ersten Migrationen aus. Die Befehle php artisan key:generate und php artisan migrate, die in älteren Tutorials stehen, sind in einem neuen Projekt nicht mehr nötig.

Prüf die installierte Version:

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

Die Alternative: der Laravel-Installer

Es gibt einen globalen Installer, der den Befehl abkürzt und dir ein Starter-Kit zur Auswahl anbietet:

bash
composer global require laravel/installer
laravel new blog

Praktisch, wenn du oft Projekte anlegst, aber es fügt deiner Maschine eine globale Abhängigkeit hinzu und macht gelegentlich Ärger mit dem PATH. Wenn du laravel: command not found bekommst, erklärt der Artikel „laravel: command not found“ beheben die Lösung. Für dieses Tutorial reicht composer create-project und erspart dir den Umweg.

Der Aufbau des Projekts

Das steckt im Ordner blog. Das Grundgerüst von Laravel ist seit Laravel 8 deutlich schlanker geworden: Mehrere Dateien, die ältere Tutorials beschreiben, gibt es nicht mehr.

Im Wurzelverzeichnis

app

Der Code deiner Anwendung. Nach der Installation liegen dort nur drei Dateien: ein Basis-Controller, das Modell User und ein Service Provider. Hier kommen deine Controller und deine Modelle dazu.

bootstrap

Die Datei bootstrap/app.php ist der Konfigurationspunkt der Anwendung: Hier werden die Routen, die Middleware und die Fehlerbehandlung deklariert. In Laravel 8 und 9 war diese Rolle auf app/Http/Kernel.php, app/Console/Kernel.php und app/Exceptions/Handler.php verteilt, die es nicht mehr gibt.

config

Die Konfigurationsdateien. Laravel 13 legt standardmäßig nur zehn davon an, früher waren es rund zwanzig: Die übrigen stecken weiterhin mit ihren Standardwerten im Framework. Um eine davon herauszuholen und zu ändern, nimm php artisan config:publish.

database

Die Migrationen (der Aufbau der Tabellen), die Seeder (die Startdaten) und die Factories (Testobjekte). Hier liegt auch database.sqlite, deine Datenbank.

public

Der einzige Ordner, den der Webserver ausliefern darf. Er enthält index.php, den Einstiegspunkt aller Requests, und die von Vite kompilierten Dateien.

resources

Die Blade-Views, die Stylesheets und die JavaScript-Dateien vor dem Kompilieren.

routes

Die Adressdeklarationen. Laravel 13 legt nur zwei Dateien an, web.php und console.php. Die Dateien api.php und channels.php, die Tutorials für Laravel 8 beschreiben, entstehen nicht mehr automatisch: php artisan install:api und php artisan install:broadcasting legen sie an, wenn du sie brauchst. Dieses Tutorial nutzt nur web.php.

Im Ordner app

Http/Controllers

Die Controller: der Code, der einen Request entgegennimmt, die Daten holt und die View auswählt, die zurückgegeben wird.

Models

Die Eloquent-Modelle. Jede Tabelle der Datenbank hat ein zugehöriges Modell, über das gelesen und geschrieben wird. Diesen Ordner gibt es seit Laravel 8, in älteren Versionen lagen die Modelle direkt in app.

Das Projekt konfigurieren

Die gesamte Konfiguration, die von der Maschine abhängt, steckt in der Datei .env im Wurzelverzeichnis. Die Dateien in config lesen sie über die Funktion env(). Diese Datei gehört nie in die Versionsverwaltung: Sie enthält deine Passwörter.

Name und Adresse der Site

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

APP_NAME erscheint im Seitentitel. APP_URL dient dazu, absolute Links zu bauen, vor allem zu hochgeladenen Bildern.

Die Datenbank

Laravel 13 nutzt standardmäßig SQLite:

.env
DB_CONNECTION=sqlite

SQLite legt die ganze Datenbank in eine einzige Datei, database/database.sqlite. Kein Server zu starten, kein Benutzer anzulegen, kein Passwort zu merken. Zum Lernen ist das die beste Wahl: Du löschst die Datei und fängst von vorn an.

Wenn du MySQL oder MariaDB bevorzugst, leg die Datenbank an und ersetz diese Zeilen:

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

Das Tutorial funktioniert mit beiden. Ein Verhaltensunterschied taucht in Kapitel 8 auf, bei der Suchfunktion: Dort wird er gemessen und erklärt.

Dateien, die du im Backoffice hochlädst, landen in storage/app/public, und das ist aus dem Web nicht erreichbar. Dieser Befehl legt den Symlink an, der sie sichtbar macht:

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

Den Server starten

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

  Press Ctrl+C to stop the server

Öffne http://127.0.0.1:8000. Die Willkommensseite von Laravel erscheint. Lass dieses Terminal offen: Der Server läuft, solange du ihn nicht stoppst.

Ist Port 8000 schon belegt, bricht Laravel nicht ab: Es versucht den nächsten und sagt dir Bescheid. Lies die angezeigte Adresse, statt sie zu erraten.

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].

Du kannst das Projekt auch mit Apache, Nginx, Docker oder Laravel Herd ausliefern. Dann muss das Wurzelverzeichnis des Servers auf den Ordner public zeigen, nie auf das Projektverzeichnis: Sonst wäre deine Datei .env herunterladbar.

Die Installation prüfen

Dieser Befehl fasst den Zustand des Projekts zusammen und bestätigt, dass alles sitzt:

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

Das Projekt steht. Die Übersicht der Serie zeigt, was jedes Kapitel beiträgt. Das nächste Kapitel erklärt, wie du eine Adresse mit deinem eigenen Code verbindest.

Häufige Fehler

Port 8000 ist schon belegt php artisan serve bricht nicht ab: Es weicht auf 8001 aus und sagt es an. Lies die angezeigte Adresse, statt sie zu erraten.
Die Erweiterung intl fehlt Sie wird nicht sofort gebraucht, aber das Admin-Panel aus Kapitel 4 verlangt sie. Wer sie jetzt installiert, vermeidet später einen Abbruch von Composer.
Das Wurzelverzeichnis des Servers zeigt auf das Projekt Apache oder Nginx müssen den Ordner public ausliefern, nie das Projektverzeichnis: Sonst wird die Datei .env herunterladbar.
Die Dateien api.php und channels.php fehlen Das ist seit Laravel 11 normal. php artisan install:api und install:broadcasting legen sie bei Bedarf an.
Newsletter

Neue Tests, Tutorials und Projekte, per E-Mail.

Reproduzierbare Tests, versionierter Code, datierte Ergebnisse. Niemals Spam.