Laravel-13-Tutorial #1: Projekt installieren und einrichten
geprüft am 2 September 2026 · 6 Min.
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.
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:
php -vNur die erste Zeile zählt. Sie muss PHP 8.3, 8.4 oder 8.5 melden:
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.
composer --versionPHP-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:
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:
composer create-project laravel/laravel blogComposer lädt Laravel und seine Abhängigkeiten in einen Ordner blog. Das dauert je nach Verbindung ein bis drei Minuten.
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:
cd blog
php artisan --versionLaravel Framework 13.30.1Die Alternative: der Laravel-Installer
Es gibt einen globalen Installer, der den Befehl abkürzt und dir ein Starter-Kit zur Auswahl anbietet:
composer global require laravel/installer
laravel new blogPraktisch, 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
APP_NAME="Mon blog"
APP_URL=http://localhost:8000APP_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:
DB_CONNECTION=sqliteSQLite 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:
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.
Der Storage-Link
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:
php artisan storage:linkINFO The [public/storage] link has been connected to [storage/app/public].Den Server starten
php artisan serve 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.
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:
php artisan aboutEnvironment ........................................................
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 .................................................. databaseDas 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.