So installieren und verwenden Sie Composer unter Debian 10

Einführung

https://getcomposer.org [Composer] ist ein beliebtes Tool zum Verwalten von Abhängigkeiten für PHP, das hauptsächlich zur Vereinfachung der Installation und Aktualisierung von Projektabhängigkeiten entwickelt wurde. Es prüft, von welchen anderen Paketen ein bestimmtes Projekt abhängt, und installiert sie für Sie. Dabei werden die entsprechenden Versionen verwendet, die den Projektanforderungen entsprechen. Composer wird auch häufig zum Booten neuer Projekte verwendet, die auf gängigen PHP-Frameworks basieren, z. B. Symfony und Laravel.

In diesem Handbuch erfahren Sie, wie Sie Composer auf einem Debian 10-Server installieren und verwenden.

Voraussetzungen

Um dieses Tutorial abzuschließen, müssen Sie einen Debian 10-Server einrichten, indem Sie der Debian 10-Handbuch zur Ersteinrichtung des Servers folgen. , einschließlich eines regulären Benutzers mit "+ sudo +" - Berechtigungen.

Schritt 1 - Installieren der Abhängigkeiten

Bevor Sie Composer herunterladen und installieren können, müssen Sie sicherstellen, dass auf Ihrem Server alle Abhängigkeiten installiert sind.

Aktualisieren Sie zuerst den Paketmanager-Cache, indem Sie Folgendes ausführen:

sudo apt update

Lassen Sie uns nun die Abhängigkeiten installieren. Wir benötigen "+ curl ", um Composer und " php-cli " für die Installation und Ausführung herunterzuladen. Das Paket " php-mbstring " ist erforderlich, um Funktionen für eine Bibliothek bereitzustellen, die wir verwenden werden. ` git ` wird von Composer zum Herunterladen von Projektabhängigkeiten und ` unzip +` zum Extrahieren von komprimierten Paketen verwendet. Alles kann mit dem folgenden Befehl installiert werden:

sudo apt install curl php-cli php-mbstring git unzip

Wenn die Voraussetzungen installiert sind, können wir Composer selbst installieren.

Schritt 2 - Composer herunterladen und installieren

Composer bietet ein in PHP geschriebenes installer. Wir werden es herunterladen, überprüfen, ob es nicht beschädigt ist, und es dann zum Installieren von Composer verwenden.

Stellen Sie sicher, dass Sie sich in Ihrem Ausgangsverzeichnis befinden, und rufen Sie das Installationsprogramm mit "+ curl +" auf:

cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php

Vergewissern Sie sich als Nächstes, dass das Installationsprogramm mit dem SHA-384-Hash für das neueste Installationsprogramm auf der Seite [Composer Public Keys / Signatures] [composer-sigs] übereinstimmt. Kopieren Sie den Hash von dieser Seite und speichern Sie ihn als Shell-Variable:

HASH=

Stellen Sie sicher, dass Sie den hervorgehobenen Wert durch den neuesten Hash ersetzen.

Führen Sie nun das folgende PHP-Skript aus, um sicherzustellen, dass das Installationsskript sicher ausgeführt werden kann:

php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Sie sehen die folgende Ausgabe.

Ausgabe

Installer verified

Wenn "+ Installer corrupt +" angezeigt wird, müssen Sie das Installationsskript erneut herunterladen und überprüfen, ob Sie den richtigen Hash verwenden. Führen Sie dann den Befehl aus, um das Installationsprogramm erneut zu überprüfen. Sobald Sie ein überprüftes Installationsprogramm haben, können Sie fortfahren.

Um + composer + global zu installieren, verwenden Sie den folgenden Befehl, mit dem Composer als systemweiter Befehl mit dem Namen + composer + unter + / usr / local / bin + heruntergeladen und installiert wird:

sudo php composer-setup.php --install-dir= --filename=

Sie sehen die folgende Ausgabe:

OutputAll settings correct for using Composer
Downloading...

Composer (version 1.8.6) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Führen Sie zum Testen Ihrer Installation Folgendes aus:

composer

In der Ausgabe werden die Version und die Argumente von Composer wie folgt angezeigt:

Output   ______
 / ____/___  ____ ___  ____  ____  ________  _____
/ /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                   /_/
Composer version 1.8.6 2019-06-11 15:03:05

Usage:
 command [options] [arguments]

Options:
 -h, --help                     Display this help message
 -q, --quiet                    Do not output any message
 -V, --version                  Display this application version
     --ansi                     Force ANSI output
     --no-ansi                  Disable ANSI output
 -n, --no-interaction           Do not ask any interactive question
     --profile                  Display timing and memory usage information
     --no-plugins               Whether to disable plugins.
 -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
 -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug


. . .

Hiermit wird überprüft, ob Composer erfolgreich auf Ihrem System installiert wurde und systemweit verfügbar ist.

Lassen Sie uns nun Composer zum Verwalten von PHP-Abhängigkeiten verwenden.

Schritt 3 - Verwenden von Composer in einem PHP-Projekt

PHP-Projekte sind oft von externen Bibliotheken abhängig, und die Verwaltung dieser Abhängigkeiten und ihrer Versionen kann schwierig sein. Composer behebt dies, indem es Ihre Abhängigkeiten nachverfolgt und anderen die Installation erleichtert.

Um Composer in Ihrem Projekt verwenden zu können, benötigen Sie eine "+ composer.json" -Datei. Die Datei + composer.json teilt Composer mit, welche Abhängigkeiten für Ihr Projekt heruntergeladen werden müssen und welche Versionen jedes Pakets installiert werden dürfen. Dies ist äußerst wichtig, damit Ihr Projekt konsistent bleibt und keine instabilen Versionen installiert werden, die möglicherweise Probleme mit der Abwärtskompatibilität verursachen können.

Sie müssen diese Datei nicht manuell erstellen. Dabei können leicht Syntaxfehler auftreten. Composer generiert automatisch die Datei "+ composer.json", wenn Sie Ihrem Projekt eine Abhängigkeit hinzufügen, indem Sie den Befehl "+ required" verwenden. Sie können auf die gleiche Weise weitere Abhängigkeiten hinzufügen, ohne diese Datei manuell bearbeiten zu müssen.

Das Installieren eines Pakets mit Composer als Abhängigkeit in einem Projekt umfasst die folgenden Schritte:

  • Identifizieren Sie, welche Art von Bibliothek die Anwendung benötigt.

  • Durchsuchen Sie eine geeignete Open Source-Bibliothek unter Packagist.org, dem offiziellen Paket-Repository für Composer.

  • Wählen Sie das Paket, von dem Sie abhängen möchten.

  • Führen Sie "+ composer require" aus, um die Abhängigkeit in die Datei "+ composer.json" aufzunehmen, und installieren Sie das Paket.

Probieren wir es mit einer Demo-Anwendung aus.

Das Ziel dieser Anwendung ist es, einen bestimmten Satz in eine URL-freundliche Zeichenfolge umzuwandeln - eine slug. Dies wird normalerweise zum Konvertieren von Seitentiteln in URL-Pfade verwendet (wie der letzte Teil der URL für dieses Lernprogramm).

Beginnen wir mit der Erstellung eines Verzeichnisses für unser Projekt. Wir nennen es * slugify *:

cd ~
mkdir slugify
cd slugify

Nun ist es an der Zeit, Packagist.org nach einem Paket zu durchsuchen, mit dessen Hilfe wir slugs generieren können. Wenn Sie in Packagist nach dem Begriff "Schnecke" suchen, erhalten Sie ein ähnliches Ergebnis:

Auf der rechten Seite jedes Pakets werden in der Liste zwei Zahlen angezeigt. Die Zahl oben gibt an, wie oft das Paket installiert wurde, und die Zahl unten gibt an, wie oft ein Paket auf https://github.com [GitHub] markiert war. Sie können die Suchergebnisse anhand dieser Zahlen neu anordnen (suchen Sie nach den beiden Symbolen auf der rechten Seite der Suchleiste). Im Allgemeinen sind Pakete mit mehr Installationen und mehr Sternen stabiler, da sie von so vielen Benutzern verwendet werden. Es ist auch wichtig, die Paketbeschreibung auf Relevanz zu überprüfen, um sicherzustellen, dass es das ist, was Sie benötigen.

Wir brauchen einen einfachen String-zu-Slug-Konverter. Aus den Suchergebnissen geht hervor, dass das Paket "+ cocur / slugify +" mit einer angemessenen Anzahl von Installationen und Sternen gut zusammenpasst.

Pakete auf Packagist haben einen * Anbieternamen * und einen * Paketnamen *. Jedes Paket hat einen eindeutigen Bezeichner (einen Namespace) im selben Format, das GitHub für seine Repositorys verwendet, in der Form "+ / ". Die Bibliothek, die wir installieren möchten, verwendet den Namespace " cocur / slugif +". Sie benötigen den Namespace, um das Paket in Ihrem Projekt zu benötigen.

Nachdem Sie genau wissen, welches Paket Sie installieren möchten, führen Sie "+ composer require " aus, um es als Abhängigkeit einzuschließen, und generieren Sie auch die Datei " composer.json +" für das Projekt:

composer require cocur/slugify

Die folgende Ausgabe wird angezeigt, wenn Composer die Abhängigkeit herunterlädt:

OutputUsing version ^3.2 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
 - Installing cocur/slugify (v3.2): Downloading (100%)
Writing lock file
Generating autoload files

Wie Sie der Ausgabe entnehmen können, hat Composer automatisch entschieden, welche Version des Pakets verwendet werden soll. Wenn Sie das Verzeichnis Ihres Projekts jetzt überprüfen, enthält es zwei neue Dateien: "+ composer.json" und "+ composer.lock" sowie ein "+ vendor" -Verzeichnis:

ls -l
Outputtotal 12
-rw-r--r-- 1 sammy sammy   59 jul 15 13:53 composer.json
-rw-r--r-- 1 sammy sammy 2952 jul 15 13:53 composer.lock
drwxr-xr-x 4 sammy sammy 4096 jul 15 13:53 vendor

In der Datei + composer.lock + werden Informationen darüber gespeichert, welche Versionen der einzelnen Pakete installiert sind. Außerdem wird sichergestellt, dass dieselben Versionen verwendet werden, wenn ein anderer Benutzer Ihr Projekt klont und dessen Abhängigkeiten installiert. Im Verzeichnis "+ vendor " befinden sich die Projektabhängigkeiten. Der Ordner " vendor +" muss nicht in die Versionskontrolle übernommen werden - Sie müssen nur die Dateien "* composer.json " und " composer.lock *" einschließen.

Werfen wir einen kurzen Blick auf die Versionsbeschränkungen. Wenn Sie den Inhalt Ihrer "+ composer.json" -Datei überprüfen, sehen Sie etwa Folgendes:

cat composer.json
Output{
   "require": {
       "cocur/slugify": "^3.2"
   }
}

Möglicherweise stellen Sie das Sonderzeichen "+ ^ " vor der Versionsnummer in " composer.json" fest. Composer unterstützt verschiedene Einschränkungen und Formate für die Definition der erforderlichen Paketversion, um Flexibilität zu bieten und gleichzeitig Ihr Projekt stabil zu halten. Der Caret-Operator (+ ^ +), der von der automatisch generierten Datei + composer.json + verwendet wird, ist der empfohlene Operator für maximale Interoperabilität (siehe semantic versioning. In diesem Fall wird "* 3.2 " als minimale kompatible Version definiert und es können Aktualisierungen auf zukünftige Versionen unter " 4.0 *" vorgenommen werden.

Im Allgemeinen müssen Sie die Versionsbeschränkungen in der Datei "+ composer.json" nicht ändern. In einigen Situationen ist es jedoch möglicherweise erforderlich, dass Sie die Einschränkungen manuell bearbeiten, z. B. wenn eine wichtige neue Version Ihrer erforderlichen Bibliothek veröffentlicht wird und Sie ein Upgrade durchführen möchten oder wenn die zu verwendende Bibliothek nicht der semantischen Versionierung folgt.

Im Folgenden finden Sie einige Beispiele, die Ihnen ein besseres Verständnis der Funktionsweise von Composer-Versionsbeschränkungen vermitteln sollen:

Constraint Meaning Example Versions Allowed

^1.0

>= 1.0 < 2.0

1.0, 1.2.3, 1.9.9

^1.1.0

>= 1.1.0 < 2.0

1.1.0, 1.5.6, 1.9.9

~1.0

>= 1.0 < 2.0.0

1.0, 1.4.1, 1.9.9

~1.0.0

>= 1.0.0 < 1.1

1.0.0, 1.0.4, 1.0.9

1.2.1

1.2.1

1.2.1

1.*

>= 1.0 < 2.0

1.0.0, 1.4.5, 1.9.9

1.2.*

>= 1.2 < 1.3

1.2.0, 1.2.3, 1.2.9

Eine detailliertere Darstellung der Einschränkungen der Composer-Version finden Sie unter die offizielle Dokumentation.

Als Nächstes sehen wir uns an, wie Abhängigkeiten mit Composer automatisch geladen werden.

Schritt 4 - Einschließen des Autoload-Skripts

Da PHP selbst Klassen nicht automatisch lädt, stellt Composer ein Autoload-Skript zur Verfügung, das Sie in Ihr Projekt aufnehmen können, um das Autoloading kostenlos zu erhalten. Dies erleichtert die Arbeit mit Ihren Abhängigkeiten erheblich.

Das Einzige, was Sie tun müssen, ist, die Datei + vendor / autoload.php in Ihre PHP-Skripte aufzunehmen, bevor Sie eine Klasseninstanziierung durchführen. Diese Datei wird automatisch von Composer generiert, wenn Sie Ihre erste Abhängigkeit hinzufügen.

Probieren Sie es in unserer Anwendung aus. Erstelle die Datei + test.php + und öffne sie in deinem Texteditor:

nano test.php

Fügen Sie den folgenden Code hinzu, der die Datei + vendor / autoload.php + einfügt, die Abhängigkeit + cocur / slugify + lädt und zum Erstellen eines Slugs verwendet:

test.php

<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur\Slugify\Slugify;

$slugify = new Slugify();

echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');

Speichern Sie die Datei und beenden Sie Ihren Editor.

Führen Sie nun das Skript aus:

php test.php

Dies erzeugt die Ausgabe "+ Hallo-Welt-das-ist-ein-langer-Satz-und-ich-brauche-um-einen-Fehler daraus zu machen +".

Abhängigkeiten müssen aktualisiert werden, wenn neue Versionen herauskommen. Schauen wir uns also an, wie Sie damit umgehen.

Schritt 5 - Aktualisieren der Projektabhängigkeiten

Wenn Sie Ihre Projektabhängigkeiten auf neuere Versionen aktualisieren möchten, führen Sie den Befehl + update aus:

composer update

Dadurch wird nach neueren Versionen der Bibliotheken gesucht, die Sie in Ihrem Projekt benötigen. Wenn eine neuere Version gefunden wird und diese mit der in der Datei "+ composer.json " definierten Versionsbeschränkung kompatibel ist, ersetzt Composer die installierte Vorgängerversion. Die Datei ` composer.lock +` wird aktualisiert, um diese Änderungen widerzuspiegeln.

Sie können auch eine oder mehrere bestimmte Bibliotheken aktualisieren, indem Sie sie wie folgt angeben:

composer update

Stellen Sie sicher, dass Sie die Änderungen an Ihren Dateien "+ composer.json" und "+ composer.lock" festschreiben, nachdem Sie Ihre Abhängigkeiten aktualisiert haben, damit jeder, der im Projekt arbeitet, Zugriff auf dieselben Paketversionen hat.

Fazit

Composer ist ein mächtiges Werkzeug, das jeder PHP-Entwickler in seinem Dienstprogramm haben sollte. In diesem Tutorial haben Sie Composer unter Debian 10 installiert und in einem einfachen Projekt verwendet. Sie wissen jetzt, wie Sie Abhängigkeiten installieren und aktualisieren.

Es bietet nicht nur eine einfache und zuverlässige Möglichkeit zum Verwalten von Projektabhängigkeiten, sondern setzt auch einen neuen De-facto-Standard für das Teilen und Erkennen von PHP-Paketen, die von der Community erstellt wurden.