Heim >Backend-Entwicklung >PHP-Tutorial >(Mein erstes Mal) Laravel installieren
Manchmal, besonders wenn Sie am Anfang Ihrer Karriere stehen, kann es so aussehen, als würden Sie den Anweisungen folgen und nicht weiterkommen – während es allen anderen scheinbar furchtbar einfach zu fallen scheint.
Es kann ziemlich entmutigend sein, und ich möchte ein paar Möglichkeiten beschreiben, wie ich selbst nach, nun ja, Jahrzehnten genau das Gleiche erlebe. Hier bin ich also und versuche, die Stolpersteine und Stolpersteine, die ich mache, um die Dinge zum Laufen zu bringen, im Detail zu beschreiben. Dies ist mein erster Beitrag zu diesem Thema, aber ich hoffe, noch mehr zu verfassen.
Laravel ist bestrebt, ein fantastisches Entwicklererlebnis zu bieten [...]
Egal, ob Sie neu bei PHP-Webframeworks sind oder jahrelange Erfahrung haben [...]
Laravel wird zumindest in PHP-Kreisen als „Entwickler-Framework“ angepriesen, weil es schlichter ist als die anderen und einfache, aber strenge Architekturentscheidungen erfordert. Ich habe ein paar andere PHP-Frameworks erstellt – Drupal 7 , Drupal 8, Symfony, WordPress, Concrete5, PrestaShop, CodeIgniter fallen mir spontan ein – ich gehe also nicht darauf ein unvorbereitet.
Ich fange mit einem Barebone-Laptop an und schaue, wie weit ich komme.
Bevor Sie Ihre erste Laravel-Anwendung erstellen, stellen Sie sicher, dass auf Ihrem lokalen Computer PHP, Composer und das Laravel-Installationsprogramm installiert sind. Darüber hinaus sollten Sie entweder Node und NPM oder Bun installieren, damit Sie die Frontend-Assets Ihrer Anwendung kompilieren können.
OK. Kein Problem. Ich werde mir selbst etwas von diesem PHP installieren, Composer von ... getcomposer.org holen und herausfinden, wie ich als Nächstes den „Laravel-Installer“ installiere. Anscheinend ist in meiner Distribution Node 22 ausgeliefert oder er wurde installiert, als ich früher etwas anderes eingerichtet habe, also sollte das abgedeckt sein.
$ Composer Global erfordert Laravel/Installer
Boom. Erledigt. Noch keine Probleme, wir haben einen guten Start hingelegt und das Selbstvertrauen ist auf einem Allzeithoch.
$ laravel neue Beispiel-App
zsh: Befehl nicht gefunden: laravel
Oh. Vielleicht muss ich diese Sache mit dem höchsten Selbstvertrauen noch einmal überdenken.
Es scheint also, dass Composer nichts in regulären Binärpfaden installiert und das Composer-Installationsprogramm auch nichts unternimmt, um sich selbst zum Systempfad hinzuzufügen. Ich musste mich damit noch nie wirklich auseinandersetzen, da ich von Composer installierte Binärdateien direkt von jedem Pfad aus ausgeführt habe, in dem sie angezeigt werden. Bei Drupal gibt es beispielsweise je nach Anbieter „vendor/drush/drush/drush“ oder „vendor/bin/drush“. welche Version Sie verwenden. Muss ich mir selbst einen Symlink oder Alias hinzufügen oder die Laravel-Binärdatei dort finden, wo der Komponist sie „global“ hinzugefügt hat?
Ich weiß es nicht, also muss ich danach suchen.
Ich finde einige Hinweise auf eine Stapelüberlauf-Antwort: Sie können das Composer-Binärverzeichnis mit „composer global config bin-dir --absolute“ finden, und anscheinend wird in modernen Versionen von Composer alles mit einem ausführbaren Befehl eher in dieses Verzeichnis verschoben als sich in der Hierarchie zu verlieren.
Gut. Ich kann meinem Startskript etwas hinzufügen, um das in meinen Pfad einzufügen... außer dass dieser Befehl mehr als nur den Pfad erzeugt...
$ Composer Global Config Bin-Dir --absolute
Aktuelles Verzeichnis in /home/moopet/.config/composer
geändert /home/moopet/.config/composer/vendor/bin
... und ich kann nicht die ganze Zeichenfolge als Verzeichnis verwenden. Vielleicht muss ich tail verwenden, um die letzte Zeile zu bekommen, oder so. Warten Sie, nein, es gibt einen weiteren Kommentar zu dieser SO-Antwort, der das Flag --quiet enthält. Was macht das? Ich werde es mit Composer --help:
versuchenVerwendung:
list [Optionen] [--] []
Nun, es stellt sich heraus, dass das Ausführen von --help auf einem einfachen Composer-Befehl tatsächlich Hilfe für den Unterbefehl list und nicht für Composer selbst liefert. Das hat mich für eine Minute ratlos gemacht.
-q --quiet Keine Nachricht ausgeben
Hmm, das hört sich nicht sinnvoll an! Wir wollen etwas Output. Was gibt es sonst noch?
--raw Zur Ausgabe einer rohen Befehlsliste
--format=FORMAT Das Ausgabeformat (txt, xml, json oder md) [Standard: „txt“]
Vielleicht ist es eines davon?
Die Option „--raw“ existiert nicht.
Die Option „--format“ existiert nicht.
Nein. Wie ich dachte, sind dies Optionen zum Auflisten und keine Flags für den allgemeinen Gebrauch.
Lass es uns trotzdem mit --quiet ausführen, nur für Kacke und Spaß:
$ Composer Global Config Bin-Dir --absolute --quiet
/home/moopet/.config/composer/vendor/bin
Nun, was wissen Sie, es hat funktioniert. Es ist einfach schlecht dokumentiert.
Ich füge das mit einem kleinen Schutzcode in mein Shell-Startskript ein und wir können fortfahren:
if command -v composer >/dev/null; then export PATH=$(composer global config bin-dir --absolute --quiet):$PATH fi
Dieses Mal startet die neue Beispiel-App von Laravel und fordert mich zu ein paar Dingen auf. Ich akzeptiere die Standardeinstellungen, da ich die Dokumentation nicht weit genug gelesen habe, um den Unterschied zu erkennen, mit Ausnahme des Starter-Kits. Ich wähle „Breeze“, weil es in der Dokumentation so steht.
Der Installationsvorgang wird gestartet und alles sieht gut aus, bis:
- Root-Composer.json erfordert Laravel/Pint ^1.0 -> erfüllbar durch laravel/pint[v1.0.0, v1.1.0, v1.1.1].
- laravel/pint[v1.0.0, ..., v1.1.1] erfordert ext-xml * -> Es fehlt in Ihrem System. Installieren oder aktivieren Sie die XML-Erweiterung von PHP.
Warten Sie, PHP benötigt die XML-Erweiterung? Das wurde nie als Anforderung aufgeführt! OK, ich mache eine schnelle apt-Installation von php-xml.
Gut, alles installiert. Ich werde das Setup erneut ausführen.
Laravel neue Beispiel-App
In NewCommand.php Zeile 789:
Bewerbung existiert bereits!
Oh.
Das Installationsprogramm kam also teilweise durch, scheiterte, weil es seine Abhängigkeiten nicht überprüft hatte, und ließ die App in einem fehlerhaften Zustand zurück. Das ist kein gutes Zeichen. Laravel läuft, was, Version 11?
Sicherlich hätten sie inzwischen schon grundlegende Vorabprüfungen der Anforderungen durchgeführt? Nun ja. Ich rufe einfach rm -r example-app auf und fange noch einmal an, nichts geht verloren, weil ich noch nicht wirklich angefangen habe.
Lange Rede, kurzer Sinn1 Die nächste fehlende Abhängigkeit war die DOM-Erweiterung oder vielleicht die XML-Erweiterung. Oder vielleicht die cURL-Erweiterung.
- phpunit/phpunit[11.0.1, ..., 11.4.3] erfordern ext-dom * -> Es fehlt in Ihrem System. Installieren oder aktivieren Sie die Dom-Erweiterung von PHP.
- Root-Composer.json erfordert phpunit/phpunit ^11.0.1 -> erfüllbar durch phpunit/phpunit[11.0.1, ..., 11.4.3].
Also muss ich PHP-Dom installieren? Nein. Versuchen Sie es mit anderen. Erneut Stapelüberlauf. Es stellte sich heraus, dass ich PHP-Curl installieren muss. Richtig.
Weiter. rm -r das Verzeichnis und führen Sie den Setup-Assistenten erneut aus.
Ich werde gefragt, welchen Datenbankserver ich verwenden soll. Neben ihnen steht „Fehlende PDO-Erweiterung“.
Seufz.
Ich breche aus dem Installationsprogramm aus, lösche das gesamte Verzeichnis erneut, apt install php8.3-mysql, weil es kein direktes php-pdo-Paket und auch keinen Alias für php-mysql gibt, der funktioniert, also habe ich einige lästige apt-Vorgänge durchgeführt suchen.
IlluminateDatabaseQueryException
SQLSTATE[HY000] [2002] Verbindung abgelehnt (Verbindung: mysql, SQL: select existiert (wählen Sie 1 aus information_schema.tables aus, wobei table_schema = 'laravel_example_app' und table_name = 'migrations' und table_type in ('BASE TABLE', 'SYSTEM VERSIONED') )) als 'existiert')
Was zum Was jetzt? Dieses Installationsprogramm hat mich zu keinem Zeitpunkt nach Verbindungsdetails für eine Datenbank gefragt. Und es versucht, SQL-Befehle gegen ... etwas auszuführen. Wer weiß?
Zufällig habe ich einen MySQL-Server, der auf einem anderen Host in meinem LAN läuft, und war bereit, diesen zu verwenden (obwohl ich anmerke, dass das Mitbringen einer eigenen Datenbank nicht als Voraussetzung für Laravel aufgeführt war). Ich denke, ich hätte SQLite installieren sollen, vielleicht hätte das funktioniert, da dafür keine Anmeldeinformationen erforderlich sind.
sudo apt install php8.3-sqlite
Versuchen Sie es erneut.
rm -r Beispiel-App
Laravel neue Beispiel-App
...
Großartiger Erfolg. Hackerstimme „Ich bin dabei“. Für den Sieg. Erfolgskind.
Ich habe es geschafft? Ich denke.
Aber wenn mich jemand gefragt hätte, wie lange das dauern würde, hätte ich aufgrund der enthusiastischen Dokumentation und des guten Rufs 20 Minuten gesagt. Wenn ich es beruflich gemacht hätte, hätte mein Projektmanager diesen Betrag basierend auf den Erfahrungen mit Entwicklerschätzungen verdoppelt oder vervierfacht.
Wie lange habe ich wirklich gebraucht? Etwa eine Stunde an einem Abend und etwa eine Stunde am nächsten Tag. Ich habe es nicht eilig, aber es war nicht einfach.
Und wissen Sie was? Ich bin damit nicht zufrieden. Es wird kein MySQL verwendet, da dieser Teil des Installationsprogramms anscheinend völlig defekt ist. Ich verwende SQLite und das ist einen Schritt weiter von dem, was in einer echten Produktionsumgebung passieren würde. Es stehen also definitiv noch einige Dinge auf der TODO-Liste, bevor ich mit den eigentlichen Tutorials loslegen kann.
Aber es läuft. Die Bauschritte behaupten, dass sie ohne Probleme verliefen.
Ich bin bereit für die nächste Phase: Behebung der JsonException, des Syntaxfehlers und der ProcessTimedOutException, die in der Konsole angezeigt werden, sobald ich die Demoseite in meinem Browser öffne.
Uh-oh.
Wenn nur alles klappen würde, was.
Chorus: too late ↩
Das obige ist der detaillierte Inhalt von(Mein erstes Mal) Laravel installieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!